2012-10-28 3 views
4

(면책 조항 : Lino에서 Rhino 사용)xml 노드를 (문자열로) 기존 XML 요소 노드에 추가하는 방법 (Java 내장 함수 만 사용)?

요소가있는 문서가 있다고 가정 해 봅시다. 노드를이 요소에 문자열로 추가하는 방법을 알 수 없습니다. 문자열을 xml 노드로 구문 분석 한 다음 노드에 추가하기 위해 documentFragment를 사용하려고했지만 어디에도 갈 수 없었습니다. 요컨대, .NET의 .innerXML만큼 쉬운 것이 필요하지만 자바 API에는 없다.

var dbFactory = javax.xml.parsers.DocumentBuilderFactory.newInstance(); 
var dBuilder = dbFactory.newDocumentBuilder(); 
var doc = dBuilder.newDocument(); 
var el = doc.createElement('test'); 
var nodesToAppend = '<foo bar="1">Hi <baz>there</baz></foo>'; 
el.appendChild(???); 

제 3 자 라이브러리를 사용하지 않고 어떻게하면됩니까?

[편집] 예제에서는 명확하지 않지만 변수 'nodesToAppend'의 내용을 알지 못합니다. 그러니 제발 XML 문서에 요소를 만드는 방법에 대한 자습서를 가르키 지마.

답변

8

를 참조하십시오 - 당신은 코뿔소 상당을 유도 할 수 있어야한다 :

doc 이후
DocumentBuilderFactory dbFactory = javax.xml.parsers.DocumentBuilderFactory.newInstance(); 
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
Document doc = dBuilder.newDocument(); 
Element el = doc.createElement('test'); 
doc.appendChild(el); 


String xml = "<foo bar=\"1\">Hi <baz>there</baz></foo>"; 
Document doc2 = builder.parse(new ByteArrayInputStream(xml.getBytes())); 

Node node = doc.importNode(doc2.getDocumentElement(), true); 
el.appendChild(node); 

doc2 다른 Document의 트릭이 하나 개의 문서에서 노드를 가져 오는 것입니다 두 가지 위의 importNode 위의 API를 사용하여 완료된 또 다른 설명

+0

우수 답변, 대단히 감사합니다! 다른 문서에서 노드를 가져 오려고 할 때 importNode가 누락되었습니다. 미안해, 나는 대답을 못했지만 명성이 충분하지 않았다. :-) – user1780705

0

나는 당신의 질문이 질문처럼 생각하고 거기에 답이있다 : Java: How to read and write xml files?

는 또는 당신은 자바에서이 작업을 수행 할 수 있습니다이 링크 http://www.mkyong.com/java/how-to-create-xml-file-in-java-dom/

+0

아니요. Java로 XML 파일을 구문 분석하는 방법을 알았지 만 제 경우에는 문자열에서 요소 집합을 추가해야합니다. 문자열을 소스로 사용하기 위해 StringReader와 InputSource를 사용하여 다른 문서를 만들려고했습니다. 하지만 요소를 문서에서 다른 요소로 이동할 수는 없습니다. – user1780705