【问题标题】:Checking wether attribute is present while parsing xml在解析 xml 时检查是否存在属性
【发布时间】:2018-09-27 20:12:32
【问题描述】:

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

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

解析 xml 的 java 代码使用 dom4j (valueOf) 来解析提供 xpath 表达式的标签的值。可以通过使用“c/@oldval”之类的 xpath 表达式来获取 oldval 属性。我想弄清楚的问题是如何判断属性是否存在。因为我需要区分 oldval 属性不存在的情况和它存在且为空白的情况。下面的两个 xml 都会为 oldval 返回相同的值。

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

And

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

【问题讨论】:

  • 不确定我是否完全理解,但您可以使用 string-length() 函数,如果属性值为空,该函数将返回 0。
  • 属性是否存在且为空(即:上面播种的空字符串)或属性不存在,目前无法区分。即:如果您使用 xpath "c/@oldval"

标签: java xml dom4j


【解决方案1】:

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

/a/c[@oldval]

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

/a/c

或者,您首先获取节点

/a/c

你现在检查是否包含属性

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 2013-03-12
    • 1970-01-01
    • 2017-09-25
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多