我想显示 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/