Java XML解析/查询
当我使用NodeList nList=doc.getElementsByTagName(“stock”)时,我有这样的XML结构;它返回我3个股票,2个主股票标签和一个在子股票下面。我只想得到两个股票,这是在较高的水平和忽略所有的是在子股票标签 在Java中是否有可能在C#中生成类似LINQ查询的东西,比如只在名称等于“Sony”的地方返回我元素 谢谢Java XML解析/查询,java,xml,Java,Xml,当我使用NodeList nList=doc.getElementsByTagName(“stock”)时,我有这样的XML结构;它返回我3个股票,2个主股票标签和一个在子股票下面。我只想得到两个股票,这是在较高的水平和忽略所有的是在子股票标签 在Java中是否有可能在C#中生成类似LINQ查询的东西,比如只在名称等于“Sony”的地方返回我元素 谢谢 <city> <stock> <name>Sony</name> <
<city>
<stock>
<name>Sony</name>
</stock>
<stock>
<name>Panasonic</name>
<substocks>
<stock>
<name>Panasonic Shop 2</name>
</stock>
</substocks>
</stock>
</city>
索尼
松下
松下2号店
看看XPath及其java实现。另一种可能的方法是使用JAXB解析XML,使用LambdaJ解析操作对象列表。我建议您与包一起使用:
然后:
final NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
还有一个库具有强大的XPath导航功能:
import org.dom4j.Document;
import org.dom4j.io.SAXReader;
SAXReader reader = new SAXReader();
Document document = reader.read("test.xml");
List list = document.selectNodes("/city/stock/name[text()='Sony']");
for (Iterator iter = list.iterator(); iter.hasNext(); ) {
// TODO: place you logic here
}
更多示例是使用一行线尝试(参见此):
Collection<XML> found = new XMLDocument("your document here").nodes(
"/city/stock/name[text()='Sony']"
);
Collection found=new XMLDocument(“此处的文档”)。节点(
“/city/stock/name[text()='Sony']”
);
他只需要name=Sony的元素,所以表达式应该是/city/stock[name='Sony']
对吗?
Collection<XML> found = new XMLDocument("your document here").nodes(
"/city/stock/name[text()='Sony']"
);