2013-04-15 5 views
3

이 질문은 Interwebs의 어두운 곳에서 이전에 대답했을 수도 있지만 의미있는 Google 검색어를 검색하여 검색하는 방법조차 모를 수 있습니다.JAXB : 문자열로 태그 얻기

그래서 :

<root> 
    <tag1>Value</tag1> 
    <tag2>Word</tag2> 
    <tag3> 
    <something1>Foo</something1> 
    <something2>Bar</something2> 
    <something3>Baz</something3> 
    </tag3> 
</root> 

내가 표준 사용의 경우 자바 객체에이를 비 정렬 화하기 위해 JAXB를 사용하는 방법을 알고 : 나는 (간체) XML 문서과 같이 있다고 가정하자.

어떻게 해야할지 모르겠다. 문자열로 도매 해제 tag3 님의 내용을 unmarshal하는 것입니다. 즉,

<something1>Foo</something1> 
<something2>Bar</something2> 
<something3>Baz</something3> 

을 문자열, 태그 및 모두로 사용합니다.

+0

이 경우 언 마샬링하지 않습니다. 전체 XML을 가져와 정규 표현식 또는 사용자 정의 구문 분석을 사용하여 ''에 대한 모든 것을 얻으십시오. –

답변

1

@XmlAnyElement 주석을 사용하십시오. 나는 똑같은 해결책을 찾고 있었고, dom을 파싱하는 것을 막아주는 주석을 찾았지만, 찾지는 못했다.

세부에서 : Using JAXB to extract inner text of XML elementhttp://blog.bdoughan.com/2011/04/xmlanyelement-and-non-dom-properties.html 나는 그렇지 않으면 우리는이 솔루션을 매우 이상한 행동의 나를 위해 IndexOutOfBoundsException가

if (xml.indexOf(START_TAG) < 0) { 
    return ""; 
} 

을 얻을 수있는, 방법 getElement() 한 cheking을 추가했다. 메소드 getElement()는 XML의 모든 태그에 대해 호출됩니다. 우리가 원하는 나는이 방법은 태그의 ONE 선두로부터에서만 작동하는 것으로 나타났습니다 : 그것은 이전

업데이트에 대한 다음 태그를 추가합니다 "ValueWord"등 - 첫 번째 호출은, "값"에 대한 두 번째입니다 String를 구문 분석합니다. ,

<root> 
<parent1> 
    <tag1>Value</tag1> 
    <tag2>Word</tag2> 
    <tag3> 
     <something1>Foo</something1> 
     <something2>Bar</something2> 
     <something3>Baz</something3> 
    </tag3> 
</parent1> 
<parent2> 
    <tag1>Value</tag1> 
    <tag2>Word</tag2> 
    <tag3> 
     <something1>TheSecondFoo</something1> 
     <something2>TheSecondBar</something2> 
     <something3>TheSecondBaz</something3> 
    </tag3> 
</parent2> 

"TAG3"부모 태그 "parent2는"대신 첫 번째 태그에서 매개 변수 (푸, 바, 바즈)를 포함하여 (TheSecondFoo, TheSecondBar : 그것은 올바르게 구문 분석하는 followint 예 불가능 TheSecondBaz) 모든 제안을 부탁드립니다. 감사합니다. .

+0

나는 독립적으로 그걸 발견했다. 질문을 한 후 블로그 게시물을 작성하고 해당 솔루션을 사용하여 종료했습니다. 다른 응답 인 완전한 실패를 고려하면 녹색 확인 표시가 나타납니다. –

-1

나는이 경우에 당신에게 유용 할 수있는 유틸리티 메소드를 가지고 있습니다. 도움이되는지 확인하십시오. 귀하의 예제를 사용하여 샘플 코드를 만들었습니다.

public static void main(String[] args){ 
    String text= "<root><tag1>Value</tag1><tag2>Word</tag2><tag3><something1>Foo</something1><something2>Bar</something2><something3>Baz</something3></tag3></root>"; 
    System.out.println(extractTag(text, "<tag3>")); 

} 

public static String extractTag(String xml, String tag) { 
    String value = ""; 
    String endTag = "</" + tag.substring(1); 

    Pattern p = Pattern.compile(tag + "(.*?)" + endTag); 
    Matcher m = p.matcher(xml); 

    if (m.find()) { 
     value = m.group(1); 
    } 

    return value; 
} 
+0

왜 하향식입니까? –

+0

나는 이것과 관련이 있다고 상상한다. http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –