gpt4 book ai didi

java - Dom4j XPath 区分 null 或空字符串

转载 作者:行者123 更新时间:2023-12-02 08:29:06 24 4
gpt4 key购买 nike

我有一个像这样的 XML 架构元素:

<xs:element type="xs:string" name="IsActive" minOccurs="0"> </xs:element>

我正在使用 dom4j XPath 来评估元素。

似乎无法确定元素是否存在于 XML 文档中或者其值是否只是 "" .

我要<IsActive>是,1) "" 2) "anyvalue1" 3)"anyvalue"

我还想知道 <IsActive> 是否存在。

XPath valuePath;
Node obj = (Node)valuePath.selectSingleNode(requestElement);

obj.getText()总是返回"" ,即使<IsActive>不存在。

valuePath.valueOf(requestElement); // does the same

所以我的问题是:如何区分 null 和空字符串?

最佳答案

怎么样:

List nodeList = valuePath.selectNodes(requestElement);
if (nodeList.isEmpty()) ...

更新:@Alejandro 指出添加解释会很有帮助。

显然 selectSingleNode() 不会返回 null 或提供任何其他方式来区分导致空节点集的 XPath 表达式和上下文与产生一个或多个节点的 XPath 表达式和上下文。所以这不能满足目前的需要。

但是,selectNodes () 返回 List与给定上下文中的 XPath 表达式匹配的节点数。所以想必我们可以使用List.isEmpty()方法(或 size() 方法)来发现 XPath 是否匹配零节点或非零节点。

如果节点匹配,要获取(第一个)匹配节点,我们可以使用nodeList.get(0):

List nodeList = valuePath.selectNodes(requestElement);
if (!nodeList.isEmpty())
doSomethingWith(nodeList.get(0));

我尚未对此进行测试,但它应该可以帮助您实现目标。

关于java - Dom4j XPath 区分 null 或空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3856972/

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