0

我正在尝试向 xml 文档添加和搜索元素。当我搜索最近添加的节点时,XPath 返回“null”。

这是我的文件

    <root>
    </root>

这是我的代码

    File xmlFile = new File("C:\\caeycae.xml");
    String uri = "http://www.w3.org/2000/svg";
    DocumentBuilderFactory domFactory = DocumentBuilderFactory
            .newInstance();
    domFactory.setNamespaceAware(false);
    DocumentBuilder builder;
    builder = domFactory.newDocumentBuilder();
    Document doc = builder.parse(xmlFile);
    Element nodo = doc.createElementNS(uri, "e");
    nodo.setAttributeNS(null, "id", "a");

    doc.getDocumentElement().appendChild(nodo);
    Element testElement = (Element) getNode("root/e[@id='a']", doc);
    System.out.println("node:" + testElement);
    System.out.println("xml:" + doc.getDocumentElement());

控制台输出为:

    node: null
    xml: <root>
    <e id="a"/>
    </root>

有没有办法通知 Xpath 文档已更改?

4

1 回答 1

0

您在 SVG 命名空间中创建了新元素,但是当您搜索它时,您在没有命名空间中寻找元素名称“e”。

(无论如何这里应该发生什么有点值得怀疑。XPath 是在 XDM 数据模型上定义的,而不是在 DOM 上。XDM 模型要求当元素位于特定命名空间中时,它必须具有该命名空间的范围内命名空间声明. 使用 DOM 可以创建不满足该约束的树,对于 XPath 在遇到这样的树时应该如何表现,没有人有明确的答案。)

于 2012-04-12T14:48:05.243 回答