2013-10-27 4 views
1

XML 문서에서 노드 속성/값 등을 추출하는 방법에 대한 xml 요소/노드를 구문 분석하는 모든 예제가 있습니다.XML 문서에서 전체 xml 요소를 추출하는 방법

내가 태그를 닫는 태그에서 전체 요소를 추출해야하는 방법에 관심이있어. 예 : XML 문서에서

<?xml version="1.0"?> 
    <Employees> 
     <Employee emplid="1111" type="admin"/> 
    </Employees> 

내가

<Employee emplid="1111" type="admin"/> 

사전

감사
+1

에서 영감을 (http://stackoverflow.com/questions/9886531/how-to-parse-xml-with-jsoup) 이는 사용 [Jsoup] (http://jsoup.org/). –

+0

예, 완벽하게 작동하지만 외부 라이브러리가 없어도 만들 수 있습니까? 고마워요. – FUGAZI

+0

doc.select() (http://stackoverflow.com/questions/9886531/how-to-parse-xml-with-jsoup)의 메소드가 키에 민감하지 않다는 것을 알았습니다. xml 요소의 속성 이름에 대문자가 있으면 반환되는 문자열에 소문자가 있습니다. (매우 유감 스럽습니다.) – FUGAZI

답변

0

당신은 할 수 있습니다 변수 문자열을 저장하기 위해 전체 요소를 얻을 것 자신을 파싱하거나 Android의 XML 파서를 사용합니다. This은 후자를 사용하는 방법을 보여줍니다.

Android 파서를 사용하는 경우 완전히 구문 분석 한 다음 <Employee emplid="1111" type="admin"/> 문자열을 직접 작성해야합니다.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 문자열을 생성하는 것은 axactly 내가 싫어하는 것입니다. 모든 요소를 ​​나에게 추출하는 파서 (parser)에서 문자열을 가져온다 미래에 XML 요소의 속성을 수정하는 것이 안전하다 편집 : PS 나는 방금 조작하는 방법을 만들었지 만 내 상사에게는 좋아하지 않는다. – FUGAZI

0

지금 가장 좋은 해결책입니다.

import java.io.ByteArrayInputStream; 
import java.io.IOException; 
import java.io.StringWriter; 
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 
import javax.xml.transform.*; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 

import org.w3c.dom.Document; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 
import org.xml.sax.SAXException; 

... 

//xml document 
String xml = "<?xml version=\"1.0\"?><Employees><Employee emplid=\"1111\" type=\"admin\"/></Employees>"; 

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder parser = factory.newDocumentBuilder(); 
Document document = parser.parse(new ByteArrayInputStream(xml.getBytes())); 
//getting the target element 
NodeList list=document.getElementsByTagName("Employee"); 
Node node=list.item(0);  

//writing the element in the string variable 
TransformerFactory transFactory = TransformerFactory.newInstance(); 
Transformer transformer = transFactory.newTransformer(); 
StringWriter buffer = new StringWriter(); 
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); 
transformer.transform(new DOMSource(node), new StreamResult(buffer)); 
String str = buffer.toString(); 


System.out.println(str); 

... 

이 아마도 당신이 [이]에서 살펴 보셔야합니다 this thread

관련 문제