猿问

即使设置了 NamespaceContext 也无法获取标签的文本

我是 xpath 的新手,我从未在 java 上处理过 xml。我想从 xml 中获取值。标签前面可能有也可能mgns1:没有。所以我写了这段代码:


private List<String> parse(Node node, String file) throws XPathExpressionException {


    XPath xpath = XPathFactory.newInstance().newXPath();


    xpath.setNamespaceContext(new NamespaceContext() {


        public String getNamespaceURI(String prefix) {

            return prefix.equals("mgns1") ? "urn:edeveloper.Fournisseurs1031af" : null;

        }


        public Iterator<?> getPrefixes(String val) {

            return null;

        }


        public String getPrefix(String uri) {

            return null;

        }

    });


    Node node_codreg = (Node) xpath.evaluate("mgns1:CODREG", node, XPathConstants.NODE);


    ...


}

我尝试使用没有 .xml 的 xml mgns1:。但是在运行时我没有得到 ListNodes !那么有什么问题呢?


开满天机
浏览 80回答 1
1回答

开心每一天1111

您正在寻找名为 的元素mgns1:CODREG,其中 mgns1 表示名称空间urn:edeveloper.Fournisseurs1031af。在您向我们展示的 XML 文档中,命名空间中没有元素urn:edeveloper.Fournisseurs1031af。那么为什么你会期望你的表达式选择任何东西呢?此外,您只是在寻找所提供的直接子node节点,而您还没有告诉我们这个节点是什么。也许您想寻找所有后代,而不仅仅是直系子女?
随时随地看视频慕课网APP

相关分类

Java
我要回答