我正在尝试添加元素并将其搜索到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文档已被更改?
答案 0 :(得分:0)
您在SVG命名空间中创建了新元素,但是当您搜索它时,您在无命名空间中查找了元素名称“e”。
(无论如何应该发生什么都有点疑问.Xath是在XDM数据模型上定义的,而不是在DOM上定义.XDM模型要求当元素在特定名称空间中时,它必须具有范围内的名称空间声明对于那个命名空间。使用DOM,可以创建不满足该约束的树,并且没有人对XPath在遇到这样的树时的行为方式有明确的答案。)