2012-03-08 3 views
0

특정 코드 비트에 대한 도움이 필요합니다.특정 특성을 가진 요소 반환 JDOM

나는 document의 jdom을 가지고 있습니다. 또한 element 루트에 대한 개체가 있습니다. 이제는 속성의 값을 기반으로 특정 요소를 얻고 싶습니다. 하지만 피하고 싶지 않은 것은 완전한 요소 목록을 필터링하여 하나의 요소 만 얻는 것입니다. 그래서 문서의 가치를 필터링하는 방법이 있습니다.

내 속성 값이 '123'이제

내가 'ID'값이 '123'

이 작업을 수행하는 가장 좋은 방법은 무엇입니까

하는 요소를 원하는 말할 수 있습니다?

종류 감사합니다.

답변

3

여기에 XPath을 사용합니다. 다음의 식으로 :

1) 난 단지 특정 속성을 가진 요소를 찾기 위해 한 번 요소를 검색하는 데 필요한 경우 : 나는이 문제에 직면 한 경우 //element[@attribute='value']

+0

JDOM과 xpath를 사용하는 방법에 대해 좀 더 자세히 설명해 주시겠습니까? jdom 문서는 매우 구체적이지 않으므로 내가 찾은 자습서도 없습니다. –

+1

나는 JDom에서 XPath를 한번도 사용하지 않았지만, XPath xpath = XPath.newInstance ("// element [@ attribute = 'value']");를 사용하여 XPath 표현식을 작성한 다음이를 평가한다고 생각합니다. 루트 요소 (또는 문서, TBC) :'xpath.selectNodes (rootElement);'. XPath 표현, google "xpath tutorial"에 대한 자세한 내용은 많은 내용이 있습니다. –

2

, 나는 그것을 두 가지 방법 중 하나를 해결할 가치, 나는 간단한 searh을 할 것입니다. JDOM의 장점 (및 단점)은 전체 문서를 메모리에 저장하므로 많은 요소가 있더라도 요소를 검색하는 것이 매우 빠릅니다. XPath를 사용하더라도 (그리고 익숙하지 않다는 것을 인정하지만 이전의 대답은 밝혀졌습니다), 똑같은 일을 할 확률이 높으므로이 솔루션은 아마도 덜 효율적입니다. 일반적으로 미리 빌드 된 솔루션을 사용하면 코드를 작성하지 않아도됩니다. (이 경우 코드는 매우 작을 수 있지만) 일반적으로 더 효율적이고 종종 효율적이지 않습니다. 귀하의 요구에 특별히 맞춘 것은 아닙니다.

2) 여러 번 검색해야하는 경우 키가 특성 값인 HashMap을 작성합니다.

이러한 솔루션 중 하나라도 좋지만 몇 가지 추가 질문이 있거나 일부 샘플 코드가 필요하다고 생각되는 경우 나에게 이메일을 보내 자세한 내용을 문의하십시오.

관련 문제