我需要过滤许多这样的XML文件:
<header>
<type>1</type>
<time>today</time>
</header>
<message>
<Event...>
<Counter...>
...
</message>
我只需要选择其header.type == 1的所有邮件内容。我从多个文件中读取我需要选择类型为== 1的邮件内容。
答案 0 :(得分:0)
我只是很少更新您的XML结构以使其格式良好。以下是几个用于测试的XML文件:
========= one.xml ==========
<root>
<header>
<type>1</type>
</header>
<message>right</message>
</root>
========= two.xml ==========
<root>
<header>
<type>1</type>
</header>
<message>right</message>
</root>
========= three.xml ==========
<root>
<header>
<type>2</type>
</header>
<message>wrong</message>
</root>
简单的代码如下所示:
import java.io.File;
import static org.joox.JOOX.$;
public class JooxDemo {
public static void main(String[] args) throws Exception {
final File dirWithXmls = new File("xmls");
for (File xmlFile : dirWithXmls.listFiles()) {
final String message = $(xmlFile).xpath("//header[type='1']/../message").text();
System.out.println(xmlFile.getName() + ", message: " + message);
}
}
}
输出:
one.xml, message: right
three.xml, message: null
two.xml, message: right
如果标题属于类型 1 ,则只能获取消息。< / p>
因此,您可以在简单的非空检查后删除.text()
并使用消息节点执行所需操作。