java Document里判断XML文件中有无此节点 5

<tiripPackage>-<businessContent>-<subPackage><id>001</id><content>123</content></subP... <tiripPackage>

- <businessContent>

- <subPackage>

<id>001</id>

<content>123</content>

</subPackage>

</businessContent>

</tiripPackage>

怎么判断xml文件里有没有节点content
Document xmlDoc = DocumentHelper.parseText(str);
Element root = xmlDoc.getRootElement();//根节点
String content = root.element("content"); //如果没有content就报异常了

Document 这个类里没有直接判断有无次节点方法吗?
展开
 我来答
百度网友12ee0fd
2013-09-13 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:2323万
展开全部

使用 XPath。

        try (final FileReader reader = new FileReader("xpathexample.xml")){
            XPath xpath = XPathFactory.newInstance().newXPath();
            String expression = "count(//content)";
            InputSource source = new InputSource(reader);
            Number count = (Number) xpath.evaluate(expression, source, XPathConstants.NUMBER);
            System.out.println(count.intValue());
        } catch (final IOException | XPathExpressionException e) {
            System.err.println(e.getMessage());
        }

 

dom4j 可以使用 Document的selectSingleNode 返回null的就是没有

<PrimaryKey><Key Ref="o30"/></PrimaryKey>
val node = doc.selectSingleNode("//PrimaryKey/Key/@R")
node: org.dom4j.Node = null
val node = doc.selectSingleNode("//PrimaryKey/Key/@Ref")
node: org.dom4j.Node = org.dom4j.tree.DefaultAttribute@151d52e [Attribute: name Ref value "o30"]
匿名用户
2013-09-09
展开全部
private void doublexml(Element ele)
{
StringBuilder sb = new StringBuilder();

for(Iterator i = ele.elementIterator();i.hasNext();)
{
Element node = (Element)i.next();
System.out.println("节点名:"+node.getName());
String nodeName = node.getName();
if(node.attributes()!=null && node.attributes().size()>0)
{
for(Iterator j = node.attributeIterator();j.hasNext();)
{
Attribute item = (Attribute)j.next();
System.out.print("属性名:"+item.getName()+"\t属性值:"+item.getValue()+"\n");
}
}
if(node.getText().length()>0)
{
System.out.println("节点值:"+node.getText());
String nodeText = node.getText();
}
if(node.elementIterator().hasNext())
{
this.doublexml(node);
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a214533317
推荐于2017-11-26 · 超过13用户采纳过TA的回答
知道答主
回答量:58
采纳率:50%
帮助的人:25.7万
展开全部
获取节点名称然后和content做比较就可以了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
haodemumu168
2013-09-09 · TA获得超过299个赞
知道小有建树答主
回答量:479
采纳率:100%
帮助的人:282万
展开全部
Document doc = DocumentHelper.parseText(ss);
Element root = doc.getRootElement();
Element content = root.element("content ");

你判断下content.getText(); 是不是空


LZ,你直接用String接受 root.element("content"); 不会包错吗?

try——catchy一下 捕捉那个异常就是了

追问
不是content里面的内容为空,而是没有content这个节点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gaishilvbu5120
2013-09-09 · 超过15用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:38.8万
展开全部
你会读xml文件中节点吧,然后读出来看看是否为空就可以了 具体怎么写我记不得了
追问
我读节点,如果没有此节点直接报异常了
追答
遍历所有节点,判断这些节点中是否包含你要的节点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式