gpt4 book ai didi

java - 从复杂的空元素解析 XML 属性

转载 作者:数据小太阳 更新时间:2023-10-29 02:56:56 29 4
gpt4 key购买 nike

我有一个以下模式的 xml 文件,其中包含一些复杂的空元素(没有内容,只有属性的元素)。

<items>
<item id="0" name="a" />
<item id="1" name="b" />
</items>

我无法解析它们的属性。这是我到目前为止所做的:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(inputStream);
Element itemsElement = document.getDocumentElement();
if (itemsElement.getTagName().equals(TAG_ITEMS)) {
NodeList nodeList = itemsElement.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
// process each item node
Node node = nodeList.item(i);
if (node.getNodeType() == Node.TEXT_NODE) { // Is this the right way?
Text text = (Text) node;
// Do stuff with attributes
}
}
}

我无法将这些 Text 节点转换为 Element 节点并获取属性,我无法使用 getAttributes 从节点获取属性 - NPE 在 NamedNodeMap attributes.getLength(),我无法将其转换为 Text 并获取属性。如何解析属性?

最佳答案

您对items 中节点的文本上下文不感兴趣,但对节点item 的属性感兴趣。您可以按以下步骤进行:

//process each item node
Node node = nodeList.item(i);
if (node.getNodeName().equals("item")) {
NamedNodeMap attributes = node.getAttributes();
System.out.printf("id=%s, name=%s%n",
attributes.getNamedItem("id").getTextContent(),
attributes.getNamedItem("name").getTextContent());
}

这将打印:

id=0, name=a
id=1, name=b

关于java - 从复杂的空元素解析 XML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25359212/

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