在Java中从xml获取特定的属性值 [英] Get specific attribute value from xml in Java

查看:65
本文介绍了在Java中从xml获取特定的属性值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 Java 解析以下 XML.

I am trying to parse following XML using Java.

    <connection inherit="true" name="test">
      <ConnectionDetails>
        <conn name="domainname1.net">
            <prop name="dom-test" tags="1-test, con"/>
        </conn>
        <conn name="domainname2.net">
            <prop name="dom-test" tags="2-test, con"/>
        </conn>
        <conn name="domainname3.net">
            <prop name="dom-org" tags="org, con"/>
        </conn>
        <conn name="domainname4.net">
            <prop name="dom-test" tags="3-test"/>
        </conn>
        <conn name="domainname5.net">
           <prop name="dom-org" tags="org"/>
        </conn>
      </ConnectionDetails>
 </connection>

我已经编写了如下 Java 代码:

I have wrote Java code like :

File inputFile = new File("test.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(inputFile);
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("conn");

我需要的是:

  • 获取与包含文本test"的标签的所有连接- 域名1.net、域名2.net、域名4.net

请帮忙!

推荐答案

您可以使用 XPath:

You can use XPath:

XPath xPath = XPathFactory.newInstance().newXPath();
XPathExpression query = xPath.compile("//prop[contains(@tags, 'test')]/../@name");
NodeList nList = (NodeList)query.evaluate(doc, XPathConstants.NODESET);

如果您更喜欢更手动的方法(或者您不想要 XPath 的开销),您可以这样做:

If you prefer a more manual approach (or you don't want the overhead of XPath), you can do this:

NodeList nList = doc.getElementsByTagName("prop");
for (int i = 0, len = nList.getLength(); i < len; i++) {
    Element elm = (Element)nList.item(i);
    if (elm.getAttribute("name").contains("test")) {
        String connName = ((Element)elm.getParentNode()).getAttribute("name");
        // ...
    }
}

这篇关于在Java中从xml获取特定的属性值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆