使用ant中的js在HTML中标记搜索

时间:2016-05-25 11:56:09

标签: ant

我使用下面提到的代码来获取特定标记的内容,但是当我尝试执行它时,我会得到一些额外的数据,我不明白它为什么会发生。让我们说如果我搜索标题标记然后我得到" [echo] Title : <title>Unit Test Results</title>,Unit Test Results"结果,但问题是标题只包含"<title>Unit Test Results</title>"为什么这个额外的",Unit Test Results"事情即将发生。

<project name="extractElement" default="test">
<!--Extract element from html file-->
<scriptdef name="findelement" language="javascript">
     <attribute name="tag" />
     <attribute name="file" />
     <attribute name="property" />
     <![CDATA[
       var tag = attributes.get("tag");
       var file = attributes.get("file");
       var regex = "<" + tag + "[^>]*>(.*?)</" + tag + ">";
       var patt = new RegExp(regex,"g");
       project.setProperty(attributes.get("property"), patt.exec(file));
     ]]>
</scriptdef>

<!--Only available target...-->
<target name="test">
    <loadfile srcFile="E:\backup\latest report\Report-20160523_2036.html" property="html.file"/>
    <findelement tag="title" file="${html.file}" property="element"/>
    <echo message="Title : ${element}"/>
</target>

1 个答案:

答案 0 :(得分:0)

RegExp.exec()的返回值是一个数组。来自the Mozilla documentation on RegExp.prototype.exec()

  

返回的数组将匹配的文本作为第一项,然后   每个捕获括号的一个项目匹配包含   被捕获的文字。

如果您将以下代码添加到JavaScript ...

var patt = new RegExp(regex,"g");
var execResult = patt.exec(file);
print("execResult: " + execResult);
print("execResult.length: " + execResult.length);
print("execResult[0]: " + execResult[0]);
print("execResult[1]: " + execResult[1]);

...你会得到以下输出......

[findelement] execResult: <title>Unit Test Results</title>,Unit Test Results
[findelement] execResult.length: 2
[findelement] execResult[0]: <title>Unit Test Results</title>
[findelement] execResult[1]: Unit Test Results