JAVA에서 XML 문자열에 새 속성을 추가하는 방법은 무엇입니까? 조건 : 부모 키를 기반으로하며 구문 분석 또는 SAX를 수행해야하는 경우 JAVA 내부 API 만 사용할 수 있습니다.

Neel

다음 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>

<efg>태그 안에 "login"속성을 추가해야합니다 . 그래서 새로운 XML은

<aa>
    <bb>
        <cc>
            <cmd>
                <efg sid="C1D7B70D7AF705731B0" login="sdf34234dfs" 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>

조건은 다음과 같습니다.

  1. 내장 Java API (Java 8) 또는 SAX 파서 또는 xmlbuilder 만 사용할 수 있습니다.
  2. 추가 조건은 부모 태그를 기반으로합니다. 즉 , 태그가 항상 동일한 이름으로있을 수 있다는 것이 확실하지 않기 때문에 <cmd>자식에서 추가해야합니다 .<login><efg>

다음 코드로 DOM 파서를 사용해 보았습니다.

String xml = "xmlString";
        //Use method to convert XML string content to XML Document object
        Document doc = convertStringToXML( xml );
        doc.getDocumentElement().normalize();

        Node m = doc.getElementsByTagName("cmd").item(0).getFirstChild();
        Attr login = doc.createAttribute("login");
        login.setValue("123567");
        m.appendChild(login);

그러나 마지막 코드 줄에서 다음 오류가 발생합니다.

Exception in thread "main" org.w3c.dom.DOMException: HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it is not permitted.

누구든지 login내 조건에 따라 새 속성을 추가하는 방법 2를 제안하십시오 .

Neel
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);
                    }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관