【问题标题】:Getting org.w3c.dom.DOMException: HIERARCHY_REQUEST_ERR adding root node to document获取 org.w3c.dom.DOMException:HIERARCHY_REQUEST_ERR 将根节点添加到文档
【发布时间】:2019-08-02 02:13:56
【问题描述】:

我正在尝试创建一个简单的 XML 文档,并且在将根元素添加到文档时收到上述错误。我只有一个根元素(为文档创建的第一个元素),并且在第一个 append_child() 调用时引发错误。以下是引发错误的代码(在 securityDoc.appendChild(securityDoc) 调用中):

 public Document CreateSecurityHeader() throws ParserConfigurationException {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document securityDoc = builder.newDocument();

    try {
        Element securityRoot = securityDoc.createElementNS("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "wsse:Security");            
        securityRoot.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:wsse", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
        securityRoot.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:wsu", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");
        securityRoot.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:env", "http://www.w3.org/2003/05/soap-envelope");
        securityRoot.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:wss","http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");
        securityRoot.setAttribute("env:mustUnderstand", "1");            
        securityDoc.appendChild(securityDoc);

由于这是该文档中目前唯一的元素,我是如何得到这个错误的?我确实必须将 xalan 和 xerces 库作为此项目的依赖项拉入其他项目,这里可能不兼容吗?

【问题讨论】:

    标签: java xml xerces xalan


    【解决方案1】:

    哎呀。您将securityDoc 附加到securityDoc

    securityDoc.appendChild(securityDoc);
    

    我确定你的意思是:

    securityDoc.appendChild(securityRoot);
    

    我自己只是通过单步执行验证代码才注意到这一点,当它使用节点查找表检查建议的树结构是否合法时,我看到你附加的是DOCUMENT_NODE,这是不合法的附加到DOCUMENT_NODE

    【讨论】:

    • 啊,是的,就是这样。我看了至少 30 多次,但每次都错过了。谢谢!
    • @stu33 如果它解决了你的问题,请接受这个答案,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    相关资源
    最近更新 更多