2014-03-14 183 views
0

Hye there我是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,您有什么输出_want_,您实际上是_get_,以及这两者有什么不同? –

+0

它给了我节点x6.5cm y10.5cm index7 EXPR expr(cond(avalf(“%o”,“负责任的角色”)...这种输出 –

+0

请_edit_问题包括XML的例子,重新查询,你的输出结果以及你当前得到的输出结果我们无法理解什么是“正确的”或“错误的”,我们不能建议如何纠正它, t知道你是从什么输入开始的 –

回答

0

随着/ADOXML/MODELS/MODEL/INSTANCE[@class='Activity']您选择一个INSTANCE与标准;与/ADOXML/MODELS/MODEL/INSTANCE/ATTRIBUTE[@name='Description' and @type='STRING']你选择一个ATTRIBUTE与一个标准。

更改为:

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

,现在都将选择INSTANCE满足不同的标准。 /..回到了一个级别,以选择XPATH中的父项而不是终端元素。

+0

它仍然给我错误的输出 –

+0

当你用XPATH的每一半(“|”的任一侧)运行它时,你会得到正确的输出吗? –

+0

没有错误的输出我的意思是它给了我NODES数据 –