2012-02-24 7 views
0

유사한 태그를 무시합니다. 하지만 구문 분석 할 때 로컬 이름이 동일하기 때문에 "PHP"도 가져옵니다. 여러 LocalNames를 필터링하고 원하는 LocalNames를 선택할 수 있습니까? 어떻게해야합니까?어떻게 내가 그냥 "자바"를 포함하고이 값을 원하는이 하나</p> <pre><code><OuterTag> <Name>JAVA </Name> <InnerTag> <Name> PHP </Name> </InnerTag> </OuterTag> </code></pre> <p>같은 XML이 XML의 SAX 구문 분석

+0

XML에서 임의의 값을 얻는 것이 필요한 경우 XPath가 더 나은 선택 일 수 있습니까? – machinery

답변

1

생각은 당신이 'OuterTag'에 대한 열린 태그를 찾으면 부울 값을 사용하고 true로 설정하고 'InnerTag'에 대해 열린 태그를 찾으면 false로 설정하는 것입니다. '.

당신이 어디에 당신이 지금 '이름'태그를 찾을 이런 식으로.

또 다른 더 유연한 방법/밀어 당신이 그들을 찾을 때 태그 이름을 팝업하는 것입니다. 이렇게하면 '이름'태그를 찾아 올바른 값을 얻을 때 누가 부모 태그인지 확인할 수 있습니다.

+0

나는 덕분에, u는 나에게 적절한 방법으로 코드의 예를 들어 줄 경우, 그것은 더 도움이 될 것입니다, 당신의 논리를 구현 한 –

+0

SAX 구문 분석에 begineer이고 그것을 작동합니다 :) –

+0

^^ 니스가 도움이 : D – Moss

0

만약 내가 understend correclty라면 태그는 OuterTag에 있고 InnerTag에 속하는 태그는 아닐 것입니다. 그래서,이 내가 dom4j으로 어떻게 할 것입니다 :

SAXReader saxReader = new SAXReader(); 
    saxReader.addHandler("OuterTag/Name", new ElementHandler() { 

     @Override 
     public void onStart(ElementPath arg0) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onEnd(ElementPath arg0) { 
      // TODO Auto-generated method stub 

     } 
    }); 

    File inputFile = new File(filename); 
    saxReader.read(inputFile); 

도움이 되었기를 바랍니다.

+0

당신 맞아,하지만 난 여기에 SAX 구문 분석입니다 :) –

+0

내가 [SAXReader] (http://dom4j.sourceforge.net/dom4j-1.6.1/apidocs/org/dom4j/io/SAXReader.html) SAX 구문 분석을 수행 생각합니다. 파서가 명시 적으로 시스템 프로퍼티 org.xml.sax.driver을 사용하는 표준 SAX 정책을 지정하지 않으면 당신의 XMLReader의 구현 클래스를 결정하는 데 사용됩니다 "좋아하는 SAX 파서를 지정하거나 할 수 있습니다. org.xml.sax의 경우, .driver 시스템 속성 "JAXP 반사를 통해 사용 후 정의되지 않은 – MarcoS

0

Sax 파서는 일반적으로 코드를 쓸 수있는 후크가 있습니다. 구체적으로는 StartElement, EndElementcharacters입니다. 스택에 요소 이름을 누르십시오 :

의 startElement -

모스는 정답이있다.

문자 : 요소 이름이 'name'이고 스택에 'OuterTag'요소가있는 경우 값을 찾았습니다. 그렇지 않으면 무시하십시오.

EndElement 스택에서 요소를 팝합니다.


색소 파서는 매우 강력하지만 때로는 과장입니다. 파서가 만났을 때 조작 된 XML 또는 매우 큰 XML 파일을 구문 분석하는 데 매우 빠르며, 요소에 반응합니다.

XPath 솔루션을 '고려'할 것을 신중하게 제안합니다. XPath 솔루션은 구문 분석 작업을 수행하므로 모든 요소를 ​​쉽게 참조 할 수 있습니다. Xpath 객체를 만들고 비슷한 것을 쿼리하십시오. '/OuterTag/Name[1]' 이전에 jQuery를 사용했다면 집에있을 수 있습니다.

그러나 XML이 잘못되었거나 실제로 크고 복잡하면이 작업이 매우 느릴 수 있습니다. 너는 경고 당했다.

XPath를 가능한 해결책으로 사용할 수 있는지 확인하십시오. http://www.javabeat.net/tips/182-how-to-query-xml-using-xpath.html