2011-10-27 3 views
3

사용자가 /purchaseOrder/location[@city = 'Mountain View']과 같은 것을 할 수 있도록 간단한 "XPath"언어를 통해 POJO 트리를 공개하고 싶습니다.POJO보다 XPath 언어/인터페이스를 감싸는 가장 좋은 방법은 무엇입니까?

+0

당신이하려는 일에 대해 좀 더 자세히 설명해주십시오. 사용자는 시스템과 어떻게 상호 작용합니까? POJO가 프로그램에로드되어 사용자가 "쿼리"하도록 하시겠습니까? – pcalcao

+0

예, POJO는 기존 인스턴스이며로드되었습니다. 그러나 1 POJO의 필드가 XPath를 통해 다른 필드로 복사 될 수 있습니다. –

답변

3

나는 꽤 괜찮은 것 같고 어느 정도 유지되고있는 Apache JXpath을 보았다. 얼마나 빠르지는 모르겠다.

Jaxen 나는 또한 here과 설명 된대로 PMD's soure code과 같이 사용자가 추가 작업을해야하는 것을 보았습니다. 그러나 Jaxen은 저자에 의해 abandoned 인 것으로 보인다. 또한 여기서 지원되는 XPath 버전을 알 수 없습니다.

다른 사람들이 있습니까?

2

POJO가 JAXB 메타 데이터를 통해 XML에 매핑 된 경우 javax.xml.bind.util.JAXBSource의 인스턴스에 루트 객체를 래핑하고 javax.xml.xpath API를 사용하여 XPath 쿼리를 실행할 수 있습니다.

+0

그건 작동하지 않습니다. 'JAXBSource source = 새로운 JAXBSource (jaxbContext, parent); \t getInputSource()가 모두 null이기 때문에 Object result = expr.evaluate (source.getInputSource());는 MalformedUrlException 오류를 발생시킵니다. –

+0

JAXB 객체 (http : // www)를 사용하여이를 수행하는 적절한 방법을 발견했습니다. devguli.com/blog/eng/jaxb-binder-and-xpath/ –

+0

또는이 http://jarfiller.com/guide/jaxb/xpath.xhtml. 하지만 JXPath가 더 빠르다는 것을 알게 될 것입니다. –

관련 문제