gpt4 book ai didi

java - 使用Java获取XML子元素

转载 作者:行者123 更新时间:2023-12-02 07:00:39 25 4
gpt4 key购买 nike

我真的不太擅长操作 XML,我需要一些帮助。这是我的 XML 文件的示例:

<?xml version="1.0"?>
<components>
<resources>
<resource id="House">
<id>int</id>
<type>string</type>
<maxUsage>float</maxUsage>
<minUsage>float</minUsage>
<averageUsage>float</averageUsage>
</resource>
<resource id="Commerce">
<id>int</id>
<type>string</type>
<maxUsage>float</maxUsage>
<minUsage>float</minUsage>
<averageUsage>float</averageUsage>
</resource>
</resources>
<agregatorsType1>
<agregator1 id="CSP">
<id>int</id>
<type>string</type>
</agregator1>
</agregatorsType1>
<soagregatorsType0>
<agregator0 id="VPP">
<id>int</id>
<type>string</type>
</agregator0>
</agregatorsType0>
</components>

我需要打印每个资源和每个聚合器的子元素(id、type、maxUsage 等)。

这是我的方法:

public static Document createXMLDocument() throws IOException, Exception {

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = factory.newDocumentBuilder();
Document documento = docBuilder.parse(filepath);
documento.getDocumentElement().normalize();
return documento;
}

public static String[] readSubElementsXML() throws IOException, Exception
{

Document documento = createXMLDocument();

//gets XML elements
Element root = documento.getDocumentElement();
NodeList nListR = root.getElementsByTagName("resource");
NodeList nListA1 = root.getElementsByTagName("agregator1");
NodeList nListA0 = root.getElementsByTagName("agregator0");

ArrayList<Node> allNodes = appendNodeLists(nListR, nListA1, nListA0); //this method merges the 3 NodeLists into one ArrayList

int tam = allNodes.size();
String[] vec = new String[tam];

for (int i = 0; i < tam; i++) {
Element elem = (Element) allNodes.get(i);
vec[i] = elem.getAttribute("id");
System.out.println(""+vec[i]);
}
return vec;
}

这样我只能获取属性 id,而我不需要它。我需要打印所有子元素,即使我将子元素添加到 XML 文件中,它也必须正常工作。

我怎样才能做到这一点?

最佳答案

Element 是 Node 的子类。请参阅Node#getChildNodes() javadoc。

A NodeList that contains all children of this node. If there are no children, this is a NodeList containing no nodes.

然后您就可以迭代子节点,例如

    NodeList childNodes = elem.getChildNodes();
int childCount = childNodes.getLength();
Node childNode;
for (int i = 0; i < childCount; i++) {
childNode = childNodes.item(i);
// do things with the node
}

关于java - 使用Java获取XML子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16705306/

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