嗨,我正在使用解析xml的代码

<a>
  <n>SomeVal</n>
  <c oldval="1">2</c>
<a>


解析xml的Java代码使用dom4j(valueOf)解析提供xpath表达式的标签的值。通过使用xpath表达式(例如“ c / @ oldval”)可以获得oldval属性。我要解决的问题是如何分辨属性是否存在。由于我需要区分不存在oldval属性的情况和存在且空白的情况。下面的两个xml都会为oldval返回相同的值。

<a>
  <n>SomeVal</n>
  <c>2</c>
<a>

And

<a>
  <b>SomeVal</b>
  <c oldval="">2</c>
<a>

最佳答案

您可以通过XPath检查包含属性的情况:

/a/c[@oldval]


如果存在oldval属性,这将返回您的情况。如果不存在,请再次检查该节点是否存在

/a/c


或者,您先获取节点

/a/c


现在检查是否包含的属性

Element element = (Element) node;
String oldvalStr = element.attributeValue("oldval");


您也可以在xpath中完全进行测试,但不会建议您,因为Java代码对于所有开发人员而言都很容易理解

09-26 09:31