2011-05-12 6 views
4

Java에서 xml 문서의 특정 부분을 읽고 복사하려고 시도하고이 부분을 새 XML 문서로 저장하려고합니다. 아래 예제에서와 같이 studentinfo 및 연락처 정보를 볼 수 있습니다. studentinfo를 선택하고 전체 영역을 노드 및 요소만큼 복사하려고합니다. 요소 만 선택하거나 노드 만 선택하는 방법에 대한 정보는 찾을 수 있습니다.Java로 특정 노드 복사하기

감사합니다. 감사드립니다. 감사합니다.

<header> 
<body> 
    <studentinfo> 
     <name>Student Name<name> 
     <studentid>0987654321<studentid> 
     <Location>USA<Location> 
    <studentinfo> 
    <contactinfo> 
     <email>[email protected]<email> 
     <address>somewhere 1<address> 
     <postalcode>123456<postalcode> 
    <contactinfo> 
<body> 
<header> 
+0

XML (파서, 프레임 워크 등)을 처리하기 위해 무엇을 사용하고 있습니까? –

+0

xml을 구문 분석하거나 xptath를 사용하여 관심있는 섹션을 가져올 수 있습니다. – Kaj

답변

9

큰 가정을 할 것입니다. 즉, org.w3c.dom.Document api를 사용하고 있습니다. 이 당신을 위해 무엇을 찾고있는없는 경우

Document doc = parse(xmlSource); 

Document targetDoc = openTargetDoc(); 
Node copyTo = findWhereYouWantToCopyStuffTo(targetDoc); 

// Find the node or nodes to want to copy.. could use XPath or some other search 
NodeList studentinfoList = doc.getElementsByTagName("studentinfo"); 

// for each found... make a copy (via importNode) and attach to some point in the target doc 
for(int i = 0; i < studnetinfoList.getLength(); i ++){ 
    Node n = studentinfoList.item(i); 
    Node copyOfn = targetDoc.importNode(n,true); 
    copyTo.appendChild(copyOfn); 
} 

, 당신은 복사 할 무엇 좀 더 디테일을 추가하고 어디에서, 무엇을 사용하는해야 할 수 있습니다

은 2 단계로 진행됩니다 API 등.

+0

필요로하는 정보를위한 고민 – Eve

+0

정확하게 "findWhereYouWantToCopyStuffTo"가 methode입니까? – Eve

+1

당신은 어느 노드를 복사 할 것인지, 그 노드를 복사 할 것인지에 대해 조금 더 구체적으로 설명하고 있습니다 :) .. 노드를 다른 문서로 복사하고 있다고 가정하고 있습니다. 그래서 findWhereYouWantToCopyStuffTo()는 타겟 문서 내의 위치를 ​​돌려줍니다. 위의 내용은 동일한 문서 내의 노드를 복사하는 데에도 사용할 수 있습니다. –