2017-10-05 5 views
0

태그 이름이 고정 된 XML을 쉽게 파싱 할 수 있습니다. XStream에서는 단순히 @XStreamAlias("tagname") 주석을 사용할 수 있습니다. 그러나 태그 이름이 고정되어 있지 않은 XML을 구문 분석하는 방법. 나는 다음과 같은 XML이 있다고 가정 :태그 이름이 고정되어 있지 않은 구문 분석 XML

<result> 
    <result1> 
    <fixed1> ... </fixed1> 
    <fixed2> ... </fixed2> 
    </result1> 
    <result2> 
    <item> 
    <America> 
     <name> America </name> 
     <language> English </language> 
    </America> 
    </item> 
    <item> 
    <Spain> 
     <name> Spain </name> 
     <language> Spanish </language> 
    </Spain> 
    </item> 
    </result2> 
</result> 

태그 이름 America 등 독일, 인도, 같은 Spain 고정되어 있지 때로는 내가 할 수있는 다른 태그 이름을이 경우에 태그 result2에 대한 POJO를 정의하는 방법

? 태그 이름을 미리 알 수없는 경우 XStream에 별칭 이름을 사용하도록 알리는 방법이 있습니까? 당신이 XPath는을 사용하여, (필드 '이름') 태그 자체 내부에서 태그를 얻을 것이 확인 인 경우

+3

이 경우 태그 이름은 실제로 국가 여야합니다. 이것은 단지 바보입니다. (나는 그것이 당신의 잘못이라고 말하는 것이 아닙니다) –

+0

예. 나는 다른 파티에서 이것을 얻고있다. 그래서 그것을 바꿀 수는 없습니다. –

+0

확실히 변경할 수 있습니다. xslt를 사용하여 덜 미친듯한 것으로 변환하십시오. –

답변

0

, 당신은 할 수 있습니다 :

//result2/*/name/text() 

다른 옵션을 전체 요소를 사용할 수, 같은

//result2/* 

이나도 :

//result2/*/name() 
+0

더 자세히 또는 일부 코드 스 니펫을 설명 할 수 있습니까? –

+0

그냥 https://stackoverflow.com/questions/2811001/how-to-read-xml-using-xpath-in-java와 규칙을 읽으십시오. https://www.freeformatter.com/ xpath-tester.html이 마지막 링크에서 패턴을 평가할 수도 있습니다. – marco

0

일부 기술 (즉, 방법 바인딩 데이터) 처리에 최적화 된 구조체가 컴파일 타임에 알려지는 XML. DOM과 기타 DOM 유사 트리 모델 (JDOM, XOM 등)과 같은 다른 것들은 구조가 미리 알려지지 않은 XML을 처리하도록 설계되었습니다. 작업에 도구를 사용하십시오.

XSLT와 XQuery는 둘 모두를 혼합하려고합니다. 스키마 인식 양식에서 정적 구조 정보를 사용할 수있을 때이를 활용할 수 있습니다. 그러나 더 일반적으로 요소 이름이나 구조에 대한 선험적 지식이없는 "유형화되지 않은"모드로 실행되며 모든 것이 처리됩니다. XSLT 규칙 기반 처리 패러다임은 내용이 예측할 수 없거나 가변적 인 "반 구조화 된"XML에 특히 적합합니다.