2014-02-25 2 views
0

두 가지 요소 유형이있는 XML 문서가 있습니다. 하나의 요소 유형에는 속성 만 있고 다른 요소 유형에는 첫 번째 요소 만 들어 있습니다.XML 요소 유형이 모두 동일

<TagList name="Results"> 
    <Tag name="type_of_identifier" value="idvalue"/> 
    <Tag name="some_other_identifier" value="otheridvalue"/> 
    .... 
    <Tag name="type" value="asdfaf"/> 
    <TagList name="SubList"> 
     <Tag name="param1" value="value1"/> 
     <Tag name="param2" value="value2"/> 
    </TagList> 
</TagList> 

저는 XML (Java)에 익숙하지 않습니다. 왜 이런 방식으로 설정했는지에 관해서는 분실했습니다.

모든 노드를 반복하지 않고 이름을 지정하여 노드 값을 얻을 수있는 방법이 있습니까?

+3

Xpath는 무엇인가요? 이 질문을 참조하십시오 http://stackoverflow.com/questions/2811001/how-to-read-xml-using-xpath-in-java –

+0

그냥 무엇을 하든지 시도하지 말고 정규식 또는 그 줄을 시도하고 모든 것을 반복하지 않고 범위를 좁히십시오. 자세한 내용은 http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – WillBD

+0

@JaroslavKubacek 네, XPath가해야합니다. 나는 http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/의 예를 따르고 있었고, 매우 지저분했다. – horriblyUnpythonic

답변

1

파일을 처리하기 전에 더 위생적인 ​​것으로 변환하는 것을 고려하십시오. 이 템플릿 규칙과 간단한 XSLT 스타일 시트 :

<xsl:template match="TagList"> 
    <xsl:element name="{@name}"> 
    <xsl:apply-templates/> 
    </xsl:element> 
</xsl:template> 

<xsl:template match="Tag"> 
    <xsl:element name="{@name}"> 
    <xsl:value-of select="@value"/> 
    </xsl:element> 
</xsl:template> 

가 이런 식으로 변환됩니다

<Results> 
    <type_of_identifier>idvalue</type_of_identfier> 
    <some_other_identifier>otheridvalue<some_other_identifier/> 
    .... 
    <type>asdfaf</type> 
    <SubList> 
     <param1>value1</param1> 
     <param2>value2</param2> 
    </SubList> 
</Results> 

이 일의 장점은 문서의 모든 후속 처리가 훨씬 쉬워진다는 것이다.

+0

이것이 효과가있는 것처럼 보입니다. 내 실제 XML 파일은 약간 더 복잡하지만 예제를 시작하면 충분하다. – horriblyUnpythonic

+0

'apply-templates' 부분이 제대로 작동하지 않는 것 같습니다. 들여 쓰기하지만 태그를 넣지는 않습니다. – horriblyUnpythonic

+0

네, 그 덕분에, 톤 했어! 작은 오타가 매우 실망 스러울 수있는 어려운 길을 배웠지 만. – horriblyUnpythonic

관련 문제