gpt4 book ai didi

java - 如何检查 JAVA 中的空 XML 元素

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:30:17 25 4
gpt4 key购买 nike

我有一个 XML 如下:

<info>
<userId>Admin</userId>
<userNotes></userNotes>
</info>

我正在尝试用 JAVA 解析它。这是我的代码片段:

NodeList userIdNodeList = document.getElementsByTagName("userId");

if (userIdNodeList!=null) {
userId = userIdNodeList.item(0).getChildNodes().item(0).getNodeValue().trim();
}

NodeList userNotesNodeList = document.getElementsByTagName("userNotes");

if (userNotesNodeList!=null) {
userNotes = userNotesNodeList.item(0).getChildNodes().item(0).getNodeValue().trim();
}

但是上面的代码抛出一个 NULL 指针错误,因为 userNotes 元素是空的。

关于如何解决这个问题有什么想法吗?

最佳答案

(已更正)

userNotesNodeList.item(0).getChildNodes().getLength()如果没有子元素或文本,将返回 0。

为什么

userNotesNodeList<userNotes> 的列表节点。有1个,反正你可以查长度来验证。

userNotesNodeList.item(0)是第一个<userNotes>元素。

userNotesNodeList.item(0).getChildNodes()是里面的东西的列表 <userNotes>...</userNotes> .

如果没有文本,这是一个有 0 个元素的 NodeList

userNotesNodeList.item(0).getChildNodes().getLength() should return 0.

我建议使用 vars 获取中间结果(以使代码更清晰)。或者创建一些辅助方法来避免这种繁琐的 XML api。

NodeList userNotesNodeList = document.getElementsByTagName("userNotes");
// userNotesNodeList should not be null, it can be zero length, but not null
Element userNotesElement = (Element) userNotesNodeList.item(0);
if (userNotesElement.getChildNodes().getLength() > 0) // then it has text
{
userNotes = userNotesElement.getChildNodes().item(0).getNodeValue();
}

关于java - 如何检查 JAVA 中的空 XML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12625374/

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