Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JAVA中向XML字符串中添加新属性?条件:基于父键,如果需要解析或SAX,我只能使用JAVA内部api_Java_Xml_Xml Parsing_Saxparser - Fatal编程技术网

如何在JAVA中向XML字符串中添加新属性?条件:基于父键,如果需要解析或SAX,我只能使用JAVA内部api

如何在JAVA中向XML字符串中添加新属性?条件:基于父键,如果需要解析或SAX,我只能使用JAVA内部api,java,xml,xml-parsing,saxparser,Java,Xml,Xml Parsing,Saxparser,我有一个xml字符串 <aa> <bb> <cc> <cmd> <efg sid="C1D7B70D7AF705731B0" mid="C1D7D7AF705731B0" stid="-1" dopt="3"> <pqr> <dru fo="1" fps

我有一个xml字符串

<aa>
    <bb>
        <cc>
            <cmd>
                <efg sid="C1D7B70D7AF705731B0" mid="C1D7D7AF705731B0" stid="-1" dopt="3">
                    <pqr>
                        <dru fo="1" fps="1" nku="WBECDD6CC37656E6C9" tt="1"/>
                        <dpo drpr="67" dpi="16"/>
                        <dres >
                            <dre dreid="BB:8D679D3511D3E4981000E787EC6DE8A4:1:1:0:2:1" fa="1" dpt= "1" o="0"/>
                        </dres>
                    </pqr>
                </efg>
            </cmd>
        </cc>
    </bb>
</aa>
然而,我在最后一行代码中遇到了以下错误

Exception in thread "main" org.w3c.dom.DOMException: HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it is not permitted.
请任何人建议我,如何根据我的第2个条件将新属性
login
添加到中。

NodeList NodeList=doc.getElementsByTagName(“cmd”);
NodeList nodeList = doc.getElementsByTagName("cmd");
                    //Check <cmd> tag is present and then check <cmd> tag has child nodes
                    if (nodeList != null && nodeList.item(0).hasChildNodes()) {
                        //Get first child node of <cmd> xml tag
                        String nodeName = doc.getElementsByTagName("cmd").item(0).getFirstChild().getNodeName();

                        NodeList childNodeList = doc.getElementsByTagName(nodeName);
                        Element el = (Element) childNodeList.item(0);
                        //set pgd_login attribute with respective value
                        el.setAttribute("login", "xyz");

                        //Convert back into xml string from Document
                        xml = XMLHelpers.TransformDOMDocumentToString(doc);
                    }
//检查标记存在,然后检查标记具有子节点 if(nodeList!=null&&nodeList.item(0.hasChildNodes()){ //获取xml标记的第一个子节点 字符串nodeName=doc.getElementsByTagName(“cmd”).item(0.getFirstChild().getNodeName(); NodeList childNodeList=doc.getElementsByTagName(nodeName); 元素el=(元素)子节点列表项(0); //使用相应的值设置pgd_登录属性 el.setAttribute(“登录”、“xyz”); //从文档转换回xml字符串 xml=XMLHelpers.TransformDOMDocumentToString(doc); }
更好的解决方案:将XML文本解析为DOM,修改DOM,从DOM生成XML文本。请参阅和。“在
之后”?没有
元素。如果您的意思是“在
sid
属性之后”,那么请注意XML属性是无序的,因此在
元素中添加属性的位置无关紧要。@Andreas Ya。我已经更新了问题。我正在尝试DOM解析器,但没有找到关于如何添加新属性的解决方案。请你给我点灯好吗。感谢第一个链接,搜索创建属性。我在问题描述部分添加了一个解决方案。谢谢你的帮助。
Exception in thread "main" org.w3c.dom.DOMException: HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it is not permitted.
NodeList nodeList = doc.getElementsByTagName("cmd");
                    //Check <cmd> tag is present and then check <cmd> tag has child nodes
                    if (nodeList != null && nodeList.item(0).hasChildNodes()) {
                        //Get first child node of <cmd> xml tag
                        String nodeName = doc.getElementsByTagName("cmd").item(0).getFirstChild().getNodeName();

                        NodeList childNodeList = doc.getElementsByTagName(nodeName);
                        Element el = (Element) childNodeList.item(0);
                        //set pgd_login attribute with respective value
                        el.setAttribute("login", "xyz");

                        //Convert back into xml string from Document
                        xml = XMLHelpers.TransformDOMDocumentToString(doc);
                    }