gpt4 book ai didi

java - 使用dom4j从节点获取属性值

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:03:18 25 4
gpt4 key购买 nike

我的 XML 结构如下例所示。我正在尝试使用 dom4j 从 XML 中获取属性值。

<baz>
<foo>
<bar a="1" b="2" c="3" />
<bar a="4" b="5" c="6" />
</foo>
</baz>

目前节点存储在一个列表中,代码如下:

public List<Foo> getFoo() {
String FOO_XPATH = "//baz/foo/*";
List<Foo> fooList = new ArrayList<Foo>();
List<Node> fooNodes = _bazFile.selectNodes(FOO_XPATH);

for (Node n : fooNodes) {
String a = /* get attribute a */
String b = /* get attribute b */
String c = /* get attribute c */
fooNodes.add(new Foo(a, b, c));
}

return fooNodes;
}

There is a similar but different question在 SO 上,但这是使用以下代码返回已知属性键/值对的节点值:

Node value = elem.selectSingleNode("val[@a='1']/text()");

在我的例子中,代码知道键但不知道值 - 这就是我需要存储的内容。 (当我需要属性值时,来自类似问题/答案的上述片段也会返回节点的文本值。)

最佳答案

您必须将 Node 转换为 Element,然后使用 attributeattributeValue 方法:

for (Node node : fooNodes) {
Element element = (Element) node;
String a = element.attributeValue("a");
...
}

基本上,从“任何节点”获取属性值没有意义,因为某些节点类型(属性、文本节点)没有属性。

关于java - 使用dom4j从节点获取属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12390575/

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