gpt4 book ai didi

java - 如何使用java在文档中追加新节点

转载 作者:搜寻专家 更新时间:2023-11-01 02:13:59 26 4
gpt4 key购买 nike

我有下面的 updateFile 代码,这里我试图在我的 xml 文件中没有 publicationid 时添加新节点。

public static void UpdateFile(String path, String publicationID, String url) {
try {

File file = new File(path);
if (file.exists()) {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(file);
document.getDocumentElement().normalize();
XPathFactory xpathFactory = XPathFactory.newInstance();
// XPath to find empty text nodes.
String xpath = "//*[@n='"+publicationID+"']";
XPathExpression xpathExp = xpathFactory.newXPath().compile(xpath);
NodeList nodeList = (NodeList)xpathExp.evaluate(document, XPathConstants.NODESET);
//NodeList nodeList = document.getElementsByTagName("p");
if(nodeList.getLength()==0)
{
Node node = document.getDocumentElement();
Element newelement = document.createElement("p");
newelement.setAttribute("n", publicationID);
newelement.setAttribute("u", url);
newelement.getOwnerDocument().appendChild(newelement);
System.out.println("New Attribute Created");
}
System.out.println();

//writeXmlFile(document,path);
}

} catch (Exception e) {
System.out.println(e);
}
}

在上面的代码中,我使用了 XPathExpression 并且所有匹配的节点都被添加到NodeList nodeList = (NodeList)xpathExp.evaluate(document, XPathConstants.NODESET);

我在这里检查是否 (nodeList.getLength()==0) 那么这意味着我没有任何节点传递了 publicationid。

如果没有这样的节点,我想创建一个新节点。

在这一行中 newelement.getOwnerDocument().appendChild(newelement);它给出错误(org.w3c.dom.DOMException:HIERARCHY_REQUEST_ERR:尝试在不允许的地方插入节点。)。

请推荐!!

最佳答案

您当前正在对文档本身调用 appendChild。这最终会创建多个根元素,这显然是您做不到的。

您需要在要添加节点的位置找到合适的元素,然后将其添加到那里。例如,如果您想将新元素添加到 根元素,您可以使用:

document.getDocumentElement().appendChild(newelement);

关于java - 如何使用java在文档中追加新节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10789066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com