带有附加节点的Xpath查询

时间:2012-04-12 14:22:25

标签: java xml dom xpath

我正在尝试添加元素并将其搜索到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文档已被更改?

1 个答案:

答案 0 :(得分:0)

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

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