1

所以我们在 /myfolder 的 100 个子文件夹中有 1500 个 xhtml 页面。我想找到邪恶的星座

<goodTag>
 ....
 <evilTag/>
 ....
 <evilTag/>
 ....
</goodTag>

在我目前的情况下,它只允许拥有

<goodTag>
....
<evilTag/>
...
</goodTag>

而不是一个好的标签中的 2 个邪恶标签。这只是一个例子。有时我必须寻找类似的东西

<outter>
....
<someTag someAttribute="iDoEvil" />
...
</outter>

我已经浏览了一段时间,找不到可以帮助我这样做的工具。Windows 中有哪些免费软件/开源解决方案?

xhtml 文件是什么样的?基本上它们是为 JSF 创建的网页。我们使用自己的标签并不断对其进行更改,因此,必须密切关注未曾想到的坏星座

我基本上是在问,因为我最终用正则表达式来做这件事,这让周围的人发疯了。

4

2 回答 2

1

这是一个bash解决方案:

  • 查找当前目录下的所有xml文件
  • 列出所有包含的 xml 文件<someTag someAttribute="iDoEvil" />

for i in `find . -name '*.xml'`
do
    if xmlstarlet sel -H -t -m '//someTag[@someAttribute="iDoEvil"]' -v @someAttribute "$i" >/dev/null
    then
        echo "$i"
    fi
done

注意:我没有尝试DOS在 Windows 中编写脚本,但想法是一样的。
您可以在此处下载xmlstarlet(Windows 版本)

于 2012-03-02T14:30:25.013 回答
0

如果您愿意编写自己的 Java 程序,可以使用apache commons IOjOOX的组合:

// Use apache commons to recurse into your file structure:
for (File file : FileUtils.listFiles(yourDir, new String[] { ".xml" }, true)) {

    // Use jOOX to parse the file and match the "bad" combination with XPath:
    if ($(file).xpath("//goodTag[count(.//evilTag) > 1]").size() > 0) {
        System.out.println("Match : " + file);
    }
}

请注意,如果您不准备编写自己的程序,也许SuperUser可能是解决此问题的更好站点...

于 2012-03-02T13:49:49.253 回答