gpt4 book ai didi

java - 使用 DOM4J 将 XML 子元素添加到 ArrayList

转载 作者:行者123 更新时间:2023-12-01 14:32:15 25 4
gpt4 key购买 nike

这是我的 XML 文件的示例:

<agregator1 id="CSP">
<id>int</id>
<type>string</type>
</agregator1>
<agregator1 id="Microgrid">
<id>int</id>
<type>string</type>
</agregator1>

我从未使用过 DOM4J 并且我已阅读文档,但我似乎无法将子元素放入 ArrayList 中,我'我正在尝试执行以下操作:

arrayList1: id, type
arrayList2: int, string

这是我的代码:

for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
Element foo = (Element) i.next();
if(foo.attributeValue("id").toString().equals("CSP"))
{
//what am I missing here?
}
}

我搜索了很多,但找不到任何解决方案,因为我无法执行 foo.getChildNodes()

有什么建议吗?

编辑:我需要在不使用 elementText(String) (或类似的东西)的情况下获取节点名称,因为即使 XML 文件发生更改,我也需要我的代码能够工作,而无需编辑我的代码.

最佳答案


我可以帮助您解决这两个问题:

方法 1:选择所有元素 aregator1,然后仅验证 attributeValue 是否等于 CSP。

Element root = document.getRootElement();
List<Element> listElement = root.selectNodes("./agregator1");
if (listElement != null) {
for (int j = 0; j < listElement.size(); j++) {
Element el = listElement.get(j);
String attrValue = el.attributeValue("id", "");
if (attrValue.length() > 0 && attrValue.equals("CSP")) {
// do your code
}
}
}
else {
// element not found
}

方法 2:只需 1 行即可完成此操作,使用 xpath

Element rootElement = doc.getRootElement();
List<Element> elementNeeded = rootElement.selectNodes("./agregator1[@id='CSP']");
if (elementNeeded != null && elementNeeded.size() > 0) {
// element found do your code
}
else {
// element not found
}

关于java - 使用 DOM4J 将 XML 子元素添加到 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16779218/

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