gpt4 book ai didi

java - 如何在 Java、XML 文件中显示具有特定 id 和标签名称以及特定父节点下的节点的值?

转载 作者:行者123 更新时间:2023-12-01 19:36:57 25 4
gpt4 key购买 nike

我想显示 XML 文件中名称为“user2”且 id=“a1”的 Java 节点的值,这些节点是名称为“user1”的节点的子节点,这是我尝试过的代码,但我是无法完成。

例如,我只想显示值 <user1><user2 id="a1"> </user2> </user1> ,其父节点为 user1,子节点为 user2,id 为“a1”。

XML

    <?xml version="1.0" encoding="UTF-8"?>
<users>
<user1>
<user2 id="a1">adil</user2>
<user2>bilal</user2>
<user2 id="a1">chand</user2>
</user1>
<user2>d</user2>
<user2 id="a1">elijah</user2>
<user1 id="a1">
<user3>
<user2 id="a1">farhan</user2>
</user3>
<user2>grahm</user2>
<user2 id="a1">haris</user2>
</user1>
</users>

我的Java代码:

    package myApp;

import java.util.Objects;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class MainActivity {

public static void main(String[] args) {

// TODO Auto-generated method stub
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("Solve.xml");
doc.getDocumentElement().normalize();

System.out.println("Root element: " + doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("user1");
for (int i = 0; i < nList.getLength(); i++) {

Node nNode = nList.item(i);

System.out.println("\nCurrent Element: " + nNode.getNodeName());

if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element elem = (Element) nNode;
String uid = elem.getAttribute("id");
Node node1 = elem.getElementsByTagName("user2").item(0);
String firstX2 = node1.getTextContent();
Node node2 = elem.getElementsByTagName("user2").item(1);
String secondX2 = node2.getTextContent();
Node node3 = elem.getElementsByTagName("user2").item(2);
String thirdX2 = node3.getTextContent();
System.out.printf("First name: %s%n", firstX2);
System.out.printf("Last name: %s%n", secondX2);
System.out.printf("Last name: %s%n", thirdX2);
}
}
}
catch(Exception e)
{

}
}
}

最佳答案

欢迎来到 stackoverflow!

这是一个较小的解决方案:

    Document doc = DocumentBuilderFactory.newInstance()
.newDocumentBuilder()
.parse("Solve.xml");

XPath xp = XPathFactory.newInstance().newXPath();

NodeList list = (NodeList) xp.evaluate("//user1/user2[@id = 'a1']", doc, XPathConstants.NODESET);
for(int i=0; i < list.getLength(); ++i) {
Element user2 = (Element) list.item(i);
System.out.println("user2 = " + user2.getTextContent());
}

关于java - 如何在 Java、XML 文件中显示具有特定 id 和标签名称以及特定父节点下的节点的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59205839/

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