2011-10-06 2 views
0

Java에 해당하는 .NET의 System.Xml.XmlNode.InnerXml이 있습니까?Java에 해당하는 System.Xml.XmlNode.InnerXml

XML 문서의 일부 단어를 바꿔야합니다.

XML 노드를 제거하기 때문에 Java의 org.w3c.dom.Node.setTextContent()을 사용할 수 없습니다.

감사합니다.

출처 :

<body> 
<title>Home Owners Agreement</title> 
<p>The <b>good</b> thing about a Home Owners Agreement is that...</p> 
</body> 

원하는 출력 :

<body> 
<title>Home Owners Agreement</title> 
<p>The <b>good</b> thing about a HOA is that...</p> 
</body> 

난 단지 <p> 태그 텍스트를 교체해야합니다.

replaceText(string term, string replaceWith, org.w3c.dom.Node p){ 
     p.setTextContent(p.getTextContent().replace(term, replaceWith)); 

} 

위의 코드의 문제는 p의 모든 자식 노드가 길을 잃지이다 : 나는 다음 시도했다.

답변

0

좋아, 나는 해결책을 찾아 냈다.

이 키는 실제 노드의 텍스트를 바꾸지 않으려는 것입니다. 실제로 텍스트 만의 하위 표현이 있습니다. 나는이 코드로 필요한 것을 성취 할 수 있었다 :

private static void replace(Node root){ 
    if (root.getNodeType() == root.TEXT_NODE){ 
     root.setTextContent(root.getTextContent().replace("Home Owners Agreement", "HMO")); 
    } 
    for (int i = 0; i < root.getChildNodes().getLength(); i++){ 
     outputTextOfNode(root.getChildNodes().item(i)); 
    } 
} 
0

jdom을 살펴볼 수 있습니다.

뭔가

document.getRootElement().getChild("ELEMENT1").setText("replacement text");처럼 당신은 JDOM 문서로 문서를 변환에 할 일이 조금있다, 그러나 당신을 위해 그 상당히 쉽게 어댑터가 있습니다. 또는 XML이 파일에있는 경우 JDOM 빌더 클래스를 사용하여 조작하려는 DOM을 작성할 수 있습니다. `

+0

내가 그렇게하면 ELEMENT1의 자식 요소를 잃지 않을까? – joe

+0

좀 더 구체적인 예를 들려 줄 수 있습니까? 나는 당신이 변경하려고하는 XML을 시각화하기가 어렵다. – DaveH

+0

이 예제를 사용하여 질문을 업데이트했습니다. 문제는 p.setTextContent()를 사용할 때 하위 노드가 손실된다는 것입니다. – joe

관련 문제