gpt4 book ai didi

java - 通过 XML 中的特定标记名称查找元素是否存在

转载 作者:数据小太阳 更新时间:2023-10-29 02:00:39 27 4
gpt4 key购买 nike

我有一个 XML 文件,其中一些子标记(子节点元素)是可选的。例如

<part>
<note>
</rest>
</note>

<note>
<pitch></pitch>
</note>

<note>
<pitch></pitch>
</note>
</part>

但是当我通过标签读取 XML 文件时,它会抛出 NullPointerException - 因为一些子标签是可选的(例如上例中的 rest 和 pitch)。我怎样才能过滤掉这个?我找不到任何方法来查找某个元素是否存在于特定的标签名称中。即使我有一个条件来检查 getElementsByTagName("tag-name") 方法是否不返回 NULL - 它仍然进入条件主体并且显然抛出异常。我该如何解决?

java代码是:

if(fstelm_Note.getElementsByTagName("rest")!=null){
if(fstelm_Note.getElementsByTagName("rest")==null){
break;
}
NodeList restElmLst = fstelm_Note.getElementsByTagName("rest");
Element restElm = (Element)restElmLst.item(0);
NodeList rest = restElm.getChildNodes();

String restVal = ((Node)rest.item(0)).getNodeValue().toString();

}else if(fstelm_Note.getElementsByTagName("note")!=null){
if(fstelm_Note.getElementsByTagName("note")==null){
break;
}

NodeList noteElmLst = fstelm_Note.getElementsByTagName("note");
Element noteElm = (Element)noteElmLst.item(0);

NodeList note = noteElm.getChildNodes();
String noteVal = ((Node)note.item(0)).getNodeValue().toString();
}

如有任何见解或建议,我们将不胜感激。提前致谢。

最佳答案

我遇到了同样的问题(使用 getElementsByTagName() 获取 XML 文件中的“可选”节点),所以我可以根据经验告诉我如何解决它。事实证明,当找不到匹配的节点时,getElementsByTagName 不会返回 null;相反,它返回一个零长度的 NodeList 对象。

您可能猜到了,在尝试获取 XML 文件的内容之前检查节点是否存在于 XML 文件中的正确方法类似于:

NodeList nl = element.getElementsByTagName("myTag");
if (nl.getLength() > 0) {
value = nl.item(0).getTextContent();
}

确保指定一个“默认”值,以防标签永远找不到。

关于java - 通过 XML 中的特定标记名称查找元素是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3202052/

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