2016-10-04 2 views
0

xml 파일의 루트 요소를 제거 할 수 있습니까? Java에서 어떻게 할 수 있습니까? 내 xml 파일은 다음과 같습니다XML 문서에서 루트 요소를 제거하는 방법은 무엇입니까?

<root> 
<body> 
.... 
</body> 
</root> 

이미 색스하여 구문 분석을 시도하고 확인 내가 이것을 구현,하지만 SAX는 XML 파일에 코드를 작성하는 것을 허용하지 않는 것을 발견 (나는 즉 읽기 정말 열심히). 루트 태그에서 내용을 가져 와서 본문을 부모로 사용하여 새 문서에 쓰는 방법을 알고 계셨습니까?

+0

SAX 매우 낮습니다. 대신 DOM을 사용해야합니다. [DocumentBuilderFactory] (http://docs.oracle.com/javase/8/docs/api/javax/xml/parsers/DocumentBuilderFactory.html)를 읽고 DocumentBuilder 및 문서에 대한 링크를 따라 가십시오. – VGR

+0

[DOM을 사용하여 XML 문서의 루트 노드를 제거하는 방법] (http://stackoverflow.com/questions/4198967/how-to-remove-the-root-node-of-an-xml-document)의 가능한 복제본 -with-dom) –

답변

-1

경우 당신은 그냥 문자열로 구문 분석하고 빈 문자열에 태그를 교체 등 SAX로 XML 파일을 구문 분석 할 필요가 없습니다 <root></root> 태그를 제거해야합니다.

아주 아주 기본적인 예는 수 : 문제를 해결하기

String str = "<root><body></body></root>"; 

    String str2 = str.replace("<root>", "").replace("</root>", ""); 
    System.out.println(str2); 
+2

XML 또는 HTML 정규식을 한 문장으로 볼 때 나는 항상 [this] (http://stackoverflow.com/a/1732454/5091346) 대답을 참조하십시오. –

+2

@AndriiAbramov 기술적으로이 코드는 정규 표현식을 사용하지 않지만, XML 및 HTML에 대해서는 매우 나쁜 아이디어 인 블라인드 문자열 대체를 여전히 사용하고 있습니다. 동일한 이유로 정규 표현식은 매우 나쁜 생각입니다. – VGR

+1

정규식을 사용하지 않았기 때문에 내 대답이 잘못되었음을 알려 주셔서 고마워요. 왜 이해해야하니 OP가 xml으로 어떤 멋진 일을하도록 요청받지 않았기 때문에 ''과 ''태그를 왜곡하는 것이 잘못되었습니다. 파싱. 필자의 대답에서 나는 이것이 OP가 원했던 코드의 아주 기본적인 샘플임을 강조한다. 더 이상 downvote 할 필요가 없으며 정답을 게시하십시오. – pleft

0

한 가지 방법은 GitHub의에서 사용할 수있는 Scilca XML Progession 패키지를 사용하여 문서로 구문 분석하는 것입니다. 하위 요소의 구조를 가져 와서 저장할 수 있습니다.

import org.scilca.sxp.*; 

XMLConnection xc = new XMLConnection("@filepath"); 
List<Node> allBodies = xc.searchMatches("body"); // as body is second tag it will be first in list 
Node neededNode = allBodies.get(0); 

//Writing Portion 

Document data = new Document(neededNode); 
XMLWriter xw = data.getWriter(); 
xw.saveXML("@filepath2"); 
관련 문제