gpt4 book ai didi

Java字符串转xml来列出

转载 作者:行者123 更新时间:2023-12-01 23:55:38 24 4
gpt4 key购买 nike

我是 Java 新手,需要一些帮助。我有一个如下所示的 XML:

String pXML =
"<root>
<x>1</x>
<x>2</x>
<x>3</x>
<x>4</x>
</root>"

我想获取一个包含 x 标记内所有值的 List 对象。

我尝试过 javax.xml.parsers.DocumentBuilderFactory:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder = factory.newDocumentBuilder();
document = (Document) builder.parse( new InputSource( new StringReader(pXML) ) );
Node n = document.getFirstChild();
NodeList n1 = n.getChildNodes();
//and then I go through all the nodes and insert the values into a list

但这不包含 x 节点。

最佳答案

您可以使用 XPath 获取所有 x 节点的值,如下所示:

public static void main(String[] args) throws SAXException, ParserConfigurationException, IOException, XPathExpressionException {
final String pXML = "<root><x>1</x><x>2</x><x>3</x><x>4</x></root>";
final Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream(pXML.getBytes()));
final XPathExpression xPathExpression = XPathFactory.newInstance().newXPath().compile("//x/text()");
final NodeList nodeList = (NodeList) xPathExpression.evaluate(document, XPathConstants.NODESET);
final List<String> values = new LinkedList<>();
for (int i = 0; i < nodeList.getLength(); ++i) {
values.add(nodeList.item(i).getNodeValue());
}
System.out.println(values);
}

输出:

[1, 2, 3, 4]

这具有作为非常通用的解决方案的优点,如果 XML 的结构发生变化,可以轻松适应。

在我看来,它还有一个优点,那就是比手动迭代文档中的节点更容易理解。

关于Java字符串转xml来列出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15638626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com