[检查Java中给定xml在jdom2中是否存在属性

问题描述 投票:0回答:1

我正在尝试在Java的XML节点中找到一个属性名为“ CommunityOwnedDate”的XML节点。我正在使用jdom2。某些节点没有该节点,我正在尝试使用jdom2找到它。还有其他简单的方法吗?

import org.jdom2.*;
import org.jdom2.input.SAXBuilder;
import org.jdom2.xpath.XPathExpression;
import org.jdom2.xpath.XPathFactory;

String xml = "<row Id="4" PostTypeId="1" AcceptedAnswerId="7" CreationDate="2008-07-31T21:42:52.667" Score="322" ViewCount="21888"  AnswerCount="13" CommentCount="1" FavoriteCount="27" CommunityOwnedDate="2012-10-31T16:42:47.213" />"
SAXBuilder saxBuilder = new SAXBuilder();

Document doc = saxBuilder.build(new StringReader(xml))
Element row = doc.getRootElement();
XPathFactory xpfac = XPathFactory.instance();
XPathExpression xp = xpfac.compile("//row[@CommunityOwnedDate]");
var xpathObjects= xp.evaluate(doc);

然后我要像这样检查它:

if(xpathObjects != null){
                //do something
            }

因此,它将引发此异常:java.lang.ClassNotFoundException:org.jaxen.NamespaceContext在java.base / java.lang.ClassLoader.loadClass(ClassLoader.java:521)

java xml attributes jdom jdom-2
1个回答
0
投票

还有另一种规避NullPointerException错误的方法。我用下面的方法:

getAttributeValue(java.lang.String attname, java.lang.String def)

这将返回具有给定名称且没有名称空间的属性的属性值,如果没有这样的属性,则返回默认值。

© www.soinside.com 2019 - 2024. All rights reserved.