解析xml时检查wether属性

时间:2018-04-17 18:37:46

标签: java xml dom4j

您好我正在处理解析xml的代码

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

解析xml的java代码使用dom4j(valueOf)来解析提供xpath表达式的标记的值。可以通过使用类似&#34; c / @ oldval&#34;的xpath表达式来获取oldval属性。我想弄清楚的问题是我怎么能告诉属性存在。因为我需要区分oldval属性不存在的情况和存在它的情况并且是空白的情况。下面的xml都会为oldval返回相同的值。

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

And

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

1 个答案:

答案 0 :(得分:1)

您可以通过XPath检查包含属性的案例:

/a/c[@oldval]
如果存在oldval属性,

将返回该情况。如果没有,请再次检查节点是否存在

/a/c

或者,您首先获取节点

/a/c

现在检查是否包含

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

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