加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用Java在文档中的任何位置定位XML元素

发布时间:2020-12-15 01:04:12 所属栏目:Java 来源:网络整理
导读:给出以下XML(示例): 我需要获取Variant和Version的值.我目前的方法是使用XPath,因为我不能依赖给定的结构.我所知道的是文档中某处有一个元素rsb:Version. XPath xpath = XPathFactory.newInstance().newXPath();String expression = "//Variant";InputSour

给出以下XML(示例):

我需要获取Variant和Version的值.我目前的方法是使用XPath,因为我不能依赖给定的结构.我所知道的是文档中某处有一个元素rsb:Version.

XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "//Variant";
InputSource inputSource = new InputSource("test.xml");
String result = (String) xpath.evaluate(expression,inputSource,XPathConstants.STRING);
System.out.println(result);

然而,这不输出任何东西.我尝试了以下XPath表达式:

> //变体
> // Variant / text()
> // rsb:Variant
> // rsb:Variant / text()

什么是正确的XPath表达式?或者有更简单的方法来获得这个元素?

最佳答案
我建议只循环遍历文档以查找给定的标记

public static void main(String[] args) throws SAXException,IOException,ParserConfigurationException,TransformerException {

    DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
            .newInstance();
    DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
    Document document = docBuilder.parse(new File("test.xml"));

    NodeList nodeList = document.getElementsByTagName("rsb:VersionInfo");
    for (int i = 0; i < nodeList.getLength(); i++) {
        Node node = nodeList.item(i);
        if (node.getNodeType() == Node.ELEMENT_NODE) {
            // do something with the current element
            System.out.println(node.getNodeName());
        }
    }
}

编辑:Yassin指出它不会获得子节点.这应该指出你正确的方向让孩子们.

private static List

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读