如何在JAVA中向XML字符串中添加新属性?条件:基于父键,如果需要解析或SAX,我只能使用JAVA内部api
我有一个xml字符串如何在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
<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);
}