繁体   English   中英

从字符串中的xml中提取标记到数组

[英]Extract tags from xml in string to array

我想将在字符串变量中收到的xml数据提取到列表中。 是最好使用SAX解析器或Xpath,哪种方式最快?

如果你可以引导我一些代码,也会有所帮助。

输入字符串

<TestEventEntity xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Sid>u34u5i435b4ih5b</Sid>
<UserId>9485924857429857</UserId>
<TestPercentId>4957493574395</TestPercentId>
<TestGroup>test2</TestGroup>
<SessionStartDt>2015-02-17T08:38:18.5179128-06:00</SessionStartDt>
<Event>my Event</Event>
</TestEventEntity>

预期产出

[u34u5i435b4ih5b,9485924857429857,4957493574395,test2,2015-02-17T08:38:18.5179128-06:00,my event]

有关解析器的比较,请查看此处 为了您的目的,SAX看起来是最好的选择。

对于SAXParser的代码:您需要一个XML流或文件以及一个Handler类( 在此处描述)

我不确定性能,但以下代码是一种简单的方法来做你想要的:

File xmlFile = new File("path/to/file.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);
doc.getDocumentElement().normalize();
//Get childs of root tag
NodeList elementsUnderRootTag = doc.getElementsByTagName("rootTagName").item(0).getChildNodes();
//Iterating over childs of root node
for (int i = 0; i < elementsUnderRootTag.getLength(); i++) {
    Node child = elementsUnderRootTag.item(i);
    if (child.getNodeType() == Node.ELEMENT_NODE) {
        Element elm = (Element) child;
        System.out.pringln(elm.getTextContent());
    }
}

有关解析xml文件(或字符串)的不同类型的更多信息,请查看此处 您可以在那里运行示例代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM