解析时检查是否存在属性 xml
Checking wether attribute is present while parsing xml
您好,我正在使用解析 xml
的代码
<a>
<n>SomeVal</n>
<c oldval="1">2</c>
<a>
解析 xml 的 java 代码使用 dom4j (valueOf) 解析提供 xpath 表达式的标签的值。可以使用像 "c/@oldval" 这样的 xpath 表达式来获取 oldval 属性。我想弄清楚的问题是如何判断属性是否存在。因为我需要区分 oldval 属性不存在的情况和它存在但为空的情况。下面的 xml 都将 return oldval 的相同值。
<a>
<n>SomeVal</n>
<c>2</c>
<a>
And
<a>
<b>SomeVal</b>
<c oldval="">2</c>
<a>
您可以通过 XPath 检查包含属性的大小写:
/a/c[@oldval]
如果存在 oldval 属性,这将 return 你的情况。如果不存在,再次检查节点是否存在
/a/c
或者,您先获取节点
/a/c
你现在检查是否包含
的属性
Element element = (Element) node;
String oldvalStr = element.attributeValue("oldval");
您也可以完全在 xpath 中进行测试,但不建议您这样做,因为 java 代码对所有开发人员来说都非常容易理解
您好,我正在使用解析 xml
的代码<a>
<n>SomeVal</n>
<c oldval="1">2</c>
<a>
解析 xml 的 java 代码使用 dom4j (valueOf) 解析提供 xpath 表达式的标签的值。可以使用像 "c/@oldval" 这样的 xpath 表达式来获取 oldval 属性。我想弄清楚的问题是如何判断属性是否存在。因为我需要区分 oldval 属性不存在的情况和它存在但为空的情况。下面的 xml 都将 return oldval 的相同值。
<a>
<n>SomeVal</n>
<c>2</c>
<a>
And
<a>
<b>SomeVal</b>
<c oldval="">2</c>
<a>
您可以通过 XPath 检查包含属性的大小写:
/a/c[@oldval]
如果存在 oldval 属性,这将 return 你的情况。如果不存在,再次检查节点是否存在
/a/c
或者,您先获取节点
/a/c
你现在检查是否包含
的属性Element element = (Element) node;
String oldvalStr = element.attributeValue("oldval");
您也可以完全在 xpath 中进行测试,但不建议您这样做,因为 java 代码对所有开发人员来说都非常容易理解