gpt4 book ai didi

java - 获取太多子节点无法获取属性

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

我有一个简单的 XML,我想获取属性。网上有一些例子,但我仍然不明白为什么我只看到 4 个却得到 17 个。我什至尝试计算我认为文本可能存在的位置,但我仍然没有得到那个数字,除非是长度的输出。这导致我不知道如何获取所有 Tag3 的属性名称。

<?xml version="1.0" encoding="UTF-8"?>
<tag1 xmlns="something">
<xxxxxx-Set>
<tag3 Name="a"/>
<tag3 Name="b"/>
<tag3 Name="c"/>
<tag3 Name="d"/>
</xxxxxx-Set>
<tagB>
<tag3 Name="a"/>
<tag3 Name="b"/>
<tag3 Name="c"/>
<tag3 Name="d"/>
</tagB>
</tag1>

这是我的java代码:

import java.io.File;
import java.util.Arrays;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;


public class ParseXML {


public static void main(String[] args) {
try {

File test= new File("test.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(test);

NodeList tagAs= doc.getElementsByTagName("xxxxxx-Set").item(0).getChildNodes(); //should be all the tag3 elements?

for(int i = 0; i < tagAs.getLength(); i++) {
System.out.println(tagAs);
System.out.println(i);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

注意:将 .getAttributes().getNamedItem("Name").getNodeValue() 添加到 print 语句中会出现 null 异常。输出是:

[xxxxxx-Set: null]
0
[xxxxxx-Set: null]
1
...
[xxxxxx-Set: null]
16

最佳答案

如果你想获取所有的 Name 属性(最好用小写字母命名),使用下一个方法:

Element xSet = (Element) doc.getElementsByTagName("xxxxxx-Set").item(0);
NodeList xSetTags = xSet.getElementsByTagName("tag3");

for(int i = 0; i < xSetTags.getLength(); i++) {
Element tag3 = (Element) xSetTags.item(i);
System.out.println(tag3.getAttribute("Name"));
}

我使用 org.w3c.dom.Element 类创建了它。使用 org.w3c.dom.Node 不是最好的主意,因为这个类不仅表示 xml 元素,还表示属性、注释等。查看文档以了解 NodeElement 类之间的区别。

关于java - 获取太多子节点无法获取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14751776/

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