gpt4 book ai didi

java - XPath 解析器 java 冗余

转载 作者:行者123 更新时间:2023-12-01 10:11:00 25 4
gpt4 key购买 nike

所以我需要用 XPath 解析 XML 文件。一切正常,但如果我有一个标 checkout 现多次,我的代码会显示标签内所有相同标签的所有子标签。例如:我有一个

<a>
<b></b>
</a>
<c></c>
<a>
<b></b>
</a>

输出将是:

a
b
b
c
a
b
b

我的代码是这样的:

 public void parseFileXPath() throws ParserConfigurationException, IOException, SAXException, XPathExpressionException {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document doc = documentBuilder.parse(file);
doc.getDocumentElement().normalize();

XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();

String expression;
Node node;
NodeList nodeList;

expression="/*";
node = (Node) xpath.evaluate(expression,doc, XPathConstants.NODE);
//System.out.println(node.getNodeName());

expression="/frogans-fsdl/*";
nodeList = (NodeList) xpath.evaluate(expression,doc, XPathConstants.NODESET);


NodeList nodeList1;


for (int i = 0; i < nodeList.getLength(); i++) {
String aTag = nodeList.item(i).getNodeName();

System.out.println(aTag);
expression="/frogans-fsdl/"+aTag+"/*";
nodeList1 = (NodeList) xpath.evaluate(expression,doc,XPathConstants.NODESET);

for (int j = 0; j < nodeList1.getLength(); j++) {

System.out.println("\t"+nodeList1.item(j).getNodeName());
//TODO
//Display what's inside each tag
}

expression="";
}



}

请问有什么帮助吗?

最佳答案

以下内部循环代码可能有助于获得您想要的输出:

    NodeList nodeList1;

for (int i = 0; i < nodeList.getLength(); i++) {
System.out.println(nodeList.item(i).getNodeName());
expression="*";
nodeList1 = (NodeList) xpath.evaluate(expression,nodeList.item(i),XPathConstants.NODESET);
for (int j = 0; j < nodeList1.getLength(); j++) {
System.out.println("\t"+nodeList1.item(j).getNodeName());
}
}

基本上,您需要将 nodeList.item(i) 作为后续 xpath 评估的第二个参数传递。

关于java - XPath 解析器 java 冗余,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36114652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com