2011-05-14 2 views
4

으로 VTD-XML을 사용하여 XML에서 속성의 텍스트를 얻기다음 XML을 감안할 때 자바

 VTDGen vg = new VTDGen(); 
     vg.setDoc(xmlContent); 
     vg.parse(false); 
     VTDNav vn = vg.getNav(); 
     AutoPilot ap = new AutoPilot(vn); 
     int node = 0; 

     ap.selectXPath("//SSG[1]/@q"); 
     node = ap.evalXPath(); 
     if(node != -1) { 
      myString = vn.toString(node); 
     } 

그러면 myString이 'textGoal'이 아닌 'q'가됩니다. 두 가지 질문이 있습니다.

  1. 무엇이 잘못 되었나요?
  2. 나는 'textGoal'이 URL 이스케이프 처리되어 있음을 알고 있습니다. vtd-xml이 URL-UNescape을 수행합니까? 아니면 직접해야합니까?

감사

답변

5

사용 vn.getAttributeVal(vn.toString(node))

2

그것을하는 또 다른 방법은

vn.toString(node+1) 

가정 노드가되지 -1입니다. URL 이스케이프 부분에 대해서는 toString(), toRawString()toNormalizedString() 중에서 선택할 수 있습니다.

+1

내 경로가 가변적 인 경우 어떻게해야합니까? ('getAttributeVal (vn.toString (node))'또는'toString (node ​​+ 1)') 또는 (toString (node)를 호출하는) 속성을 요청하는지 어떻게 알 수 있습니까? – halloei

+0

변수 경로 란 무엇을 의미합니까? –

+1

사용자는 XPath'/ foo/bar/text()','/ foo/bar/@ attr' 또는'/ foo [@ attr = 'baz']/bar/text()'를 넣을 수 있습니다. 알지 못해. 사용할 vtd-xml 메서드를 어떻게 알 수 있습니까? 아니면 올인원 방법이없는 이유는 무엇입니까? – halloei