【发布时间】:2017-05-18 15:27:19
【问题描述】:
我正在尝试创建一种在 XML 中查找元素的新方法,我想在 xml 中创建动态查询,我没有找到使用 xpath 的示例,
可以将 xpath 与 stax 一起使用吗?如果没有,是否有一种简单的方法来创建查询以使用 stax 查找元素?
public static void main(String[] args) throws Exception {
XMLInputFactory factory = XMLInputFactory.newInstance();
Reader fileReader = new StringReader(ExempleXml.xml);
XMLStreamReader reader = factory.createXMLStreamReader(fileReader);
while (reader.hasNext()) {
process(reader);
reader.next();
}
}
private static void process(XMLStreamReader reader) {
int eventType = reader.getEventType();
switch (eventType) {
case XMLStreamConstants.START_ELEMENT:
System.out.println("Start element: " + reader.getLocalName());
int count = reader.getAttributeCount();
for (int i = 0; i < count; i++) {
String name = reader.getAttributeLocalName(i);
String value = reader.getAttributeValue(i);
System.out.println("\tAttribute name/value: " + name + "/" + value);
}
break;
case XMLStreamConstants.END_ELEMENT:
System.out.println("End element: " + reader.getLocalName());
break;
case XMLStreamConstants.CHARACTERS:
System.out.println("Text: " + reader.getText());
break;
default:
break;
}
}
【问题讨论】:
-
XPath 旨在用于文档对象模型 (DOM),因此不适用于流式处理方法。显然有人已经将一个库放在一起,将 XPath 塞入流模型中,但我对将缰绳放在自行车上持怀疑态度。如果要操作 DOM,为什么要使用流模型?
-
我觉得这篇博文和你问的很像stackoverflow.com/questions/8791600/…