2014-03-14 3 views
0

나는 XML에 익숙하지 않다. 나는이 두 가지 쿼리에 가입하고 싶다!두 개의 XPath 쿼리 합치기

/ADOXML/MODELS/MODEL/INSTANCE[@class='Activity'] | /ADOXML/MODELS/MODEL/INSTANCE/ATTRIBUTE[@name='Description' and @type='STRING'] 

그러나 문제는 나의 코드를 사용하여 나에게 잘못 출력을 제공한다는 것입니다 :

/ADOXML/MODELS/MODEL/INSTANCE[@class='Activity'] 

/ADOXML/MODELS/MODEL/INSTANCE/ATTRIBUTE[@name='Description' and @type='STRING'] 

내가 시도

NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(document, XPathConstants.NODESET); 

ArrayList<String> text = new ArrayList<String>(); 

int k; 
for (k = 0; k < nodeList.getLength(); k++) { 

String txt=nodeList.item(k).getTextContent(); 
txt=txt.replace("[","").replace("]","").replace("#","").replace(":", "").replace("•", "").replace("\n", " ") 
     .replace("\u0092", " ").replace("'", "").replace("•", " ").replace("-", " ").replace("’", " ").replace("\n", " "); 


text.add(txt); 


} 

어떻게 할 수 위의 두 검색어에 합류합니다.

+0

"잘못된"정의 - 어떤 XML로 작업하고 있는지, 어떤 출력을 원하십니까? 실제로 무엇이 _get_이며 어떻게 다른가? –

+0

그것은 나에게 NODE x6.5cm y10.5cm index7 EXPR expr (cond (avalf ("% o", "Responsible role") ... 이런 종류의 출력을 제공합니다. –

+0

XML의 예제를 포함 시키려면 _edit_ 질문을하십시오. 당신이 현재 얻고있는 출력과 당신이 원하는 출력을 알아내는 것입니다. 우리는 "옳은"것 "잘못된 것"으로 간주되는 것을 알기 위해 마음을 읽을 수 없으며, 어떤 입력을 시작했는지 알지 못한다. –

답변

0

/ADOXML/MODELS/MODEL/INSTANCE[@class='Activity']의 경우 INSTANCE을 기준으로 선택합니다. /ADOXML/MODELS/MODEL/INSTANCE/ATTRIBUTE[@name='Description' and @type='STRING']을 사용하면 crit34와 함께 ATTRIBUTE을 선택합니다. 에

변경 :

/ADOXML/MODELS/MODEL/INSTANCE[@class='Activity'] | /ADOXML/MODELS/MODEL/INSTANCE/ATTRIBUTE[@name='Description' and @type='STRING']/.. 

와 지금은 모두 다른 기준을 충족 INSTANCE 위해 선택합니다. /..은 터미널 요소가 아닌 XPATH에서 부모를 선택하는 수준으로 되돌아갑니다.

+0

여전히 나에게 잘못된 결과를 준다. –

+0

XPATH의 각 반 ('|'의 양쪽)을 실행할 때 올바른 결과를 얻는가? –

+0

잘못된 결과가 없다. 그것은 NODES 데이터를 제공합니다 –