2015-01-23 2 views
0

XML은 같은 항목이 있습니다구문 분석 할 수있는 XML 항목

<News:Source>AD HOC News</News:Source> 

을하지만 파서 STAX XML을 사용할 때 그 라인을 무시 :

static final String SOURCE = "News:Source"; 
    XMLInputFactory inputFactory = XMLInputFactory.newInstance(); 
    // Setup a new eventReader 
    InputStream in = read(); 
    XMLEventReader eventReader = inputFactory.createXMLEventReader(in); 
    // read the XML document 
     while (eventReader.hasNext()) { 
      XMLEvent event = eventReader.nextEvent(); 
      if (event.isStartElement()) { 
       String localPart = event.asStartElement().getName().getLocalPart(); 
        switch (localPart) { 
        ... 
         case SOURCE: 
          // System.out.println("nothing happens here"); 
          source = getCharacterData(event, eventReader); 
          break; 
        ... 

이유는 무엇입니까?

+0

스위치에 사용 된 문자열 s은 어떻게 구합니까? – laune

+0

@laune 토픽 업데이트 –

+1

로컬 부분 만 사용하고 있습니다. "뉴스"접두사는 생략하십시오. – laune

답변

1

일반적으로 XML 요소를 식별하기 위해 지정된 코드에서 네임 스페이스 접두사 ("News")를 사용하는 것은 좋지 않은 생각입니다. 접두사는 XML 파일의 어딘가에서 정의되며 실제 네임 스페이스 식별자와 완전히 독립적입니다.

정확한 식별은 QName을 사용해야합니다.

모든 요소가 동일한 네임 스페이스에서 나온다면 로컬 이름 만 사용하여 도망 갈 수도 있지만 ("소스"),이를 보장 할 수있는 XML 파일에 대해 모두 알고 있어야합니다.

나중에 글쎄,이 마지막 제안은 코드에서 이미 수행 한 것입니다. 그러므로 그냥 사용하십시오

static final String SOURCE = "Source";