2008-08-22 3 views
7

Java로 여러 개의 분리 된 사용자 정의 XML 문서를 구문 분석하는 가장 좋은 방법은 무엇입니까?Java의 다양한 사용자 정의 XML 문서를 구문 분석하는 가장 좋은 방법

+1

얼마나 멀리 가지고 있는지 보여주십시오. 우리는 당신을 위해 그것을 쓰지 않을 것입니다. DOM, SAX 또는 다른 언어로이 작업을 수행하고 싶습니까? 어느 것을 시도해 봤어? 어떤 자습서/문서를 보았습니까? – mdm

+0

xml 구문 분석을 위해 java dom api 또는 sax를 사용하십시오. 보다 구체적인 xml 구조체를 제공하십시오. – 0xAX

+0

[castor] (http://www.castor.org/xml-mapping.html) 매핑을 사용해보세요. – nIKUNJ

답변

5

XML을 구문 분석하는 데 Stax을 사용하면 빠르고 쉽게 사용할 수 있습니다. 마지막 프로젝트에서 XML 파일을 최대 24MB까지 구문 분석했습니다. java.net에 대한 소개가 있는데, 시작하기 전에 알아 두어야 할 모든 것을 알려줍니다.

4

기본적으로, 당신은 자바에서 두 가지 주요 XML 파싱 방법이 있습니다 만이 당신의 XML에서 원하는 것을 잡아 및 구문 분석 나머지

  • DOM을, 도랑

    • SAX, 당신은에 handler를 사용하여 파일을 모두 가져와 나무와 같은 방식으로 모든 요소를 ​​가져올 수 있습니다.

    또 다른 매우 유용한 XML 구문 분석 방법은 이들보다 약간 최근이지만 Java6 이후의 JRE에만 포함되어 있으며 StAX입니다. StAX는 DOM 기반 트리와 SAX의 이벤트 기반 접근 방식 사이의 중간 방법으로 고안되었습니다. 매우 큰 문서를 파싱하는 것이 쉽다는 점에서 SAX와 매우 유사하지만이 경우 애플리케이션은 이벤트를 구문 분석하여 애플리케이션에 푸싱하는 대신 파서에서 정보를 "가져옵니다". 이 주제에 대한 자세한 설명은 here에서 찾을 수 있습니다.

    따라서 달성하려는 목표에 따라 이러한 접근 방법 중 하나를 사용할 수 있습니다.

  • +0

    여러 가지 방법에 대한 자세한 정보를 제공하기 위해 복제본의 내 대답에서 복사했습니다. –

    2

    오직 구문 분석이 필요한 경우 XPath 라이브러리를 사용하는 것이 좋습니다. 좋은 참고 자료는 다음과 같습니다. http://www.ibm.com/developerworks/library/x-javaxpathapi.html

    그러나 XML을 객체로 변환 한 다음 하늘을 제한하는 것이 좋습니다. 당신이 XStream를 사용할 수에 대한 이 내가 그런 당신이 필요로하는 값을 얻기 위해 XPATH를 사용하여 문서

    import java.net.URL; 
    
    import org.dom4j.Document; 
    import org.dom4j.DocumentException; 
    import org.dom4j.io.SAXReader; 
    
    public class Foo { 
    
        public Document parse(URL url) throws DocumentException { 
         SAXReader reader = new SAXReader(); 
         Document document = reader.read(url); 
         return document; 
        } 
    } 
    

    을 읽을

    2

    사용 dom4j 라이브러리

    먼저 작정 사용 훌륭한 라이브러리이다

    public void get_author(Document document) { 
        Node node = document.selectSingleNode("//AppealRequestProcessRequest/author"); 
        String author = node.getText(); 
        return author; 
    } 
    
    0

    는 아래 vtd-xml를 사용하여 어떤 값이 값을 추출하는 코드이다.

    import com.ximpleware.*; 
    
    public class extractValue{ 
        public static void main(String s[]) throws VTDException, IOException{ 
         VTDGen vg = new VTDGen(); 
         if (!vg.parseFile("input.xml", false)); 
         VTDNav vn = vg.getNav(); 
         AutoPilot ap = new AutoPilot(vn); 
         ap.selectXPath("/aa/bb[name='k1']/value"); 
         int i=0; 
         while ((i=ap.evalXPath())!=-1){ 
          System.out.println(" value ===>"+vn.toString(i)); 
         } 
        } 
    } 
    
    관련 문제