如何使用Java按顺序读取相同的标记名值
Java代码: 目前我的实际结果如下表所示 账号:123 年龄:29 姓名:Pankaj 性别:男 角色:Java开发人员 年龄:35 姓名:朱莉 性别:女 角色:Dotnet开发人员 账号:456 年龄:29 姓名:Pankaj 性别:男 角色:Java开发人员 年龄:35 姓名:朱莉 性别:女 角色:Dotnet开发人员 但我的预期结果应该是这样的: 账号:123 年龄:29 姓名:Pankaj 性别:男 角色:Java开发人员 账号:456 年龄:35 姓名:朱莉 性别:女 角色:Dotnet开发人员注意:问题中的XML已更改。以下内容基于原始XML,并添加了根标记,如答案末尾所示 从DOM树提取信息时,需要使用XML结构 基本上,不要迭代元素,而是迭代文档的元素,然后使用getElementsByTagName。。。方法,而不是文档对象上的方法,以扫描嵌套元素如何使用Java按顺序读取相同的标记名值,java,xml,dom,Java,Xml,Dom,Java代码: 目前我的实际结果如下表所示 账号:123 年龄:29 姓名:Pankaj 性别:男 角色:Java开发人员 年龄:35 姓名:朱莉 性别:女 角色:Dotnet开发人员 账号:456 年龄:29 姓名:Pankaj 性别:男 角色:Java开发人员 年龄:35 姓名:朱莉 性别:女 角色:Dotnet开发人员 但我的预期结果应该是这样的: 账号:123 年龄:29 姓名:Pankaj 性别:男 角色:Java开发人员 账号:456 年龄:35 姓名:朱莉 性别:女 角色:Dotn
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document =documentBuilder.parse(file);
NodeList nodeList1 = document.getElementsByTagName("Accountnumber");
for (int k = 0; k < nodeList1.getLength(); k++) {
Node accountnode = nodeList1.item(k); //to read all the tags from account number
if (accountnode != null) {
String acc = document.getElementsByTagName("Accountnumber").item(k).getTextContent();
System.out.println("Account number:" + " " + acc);
NodeList nodeList2 = document.getElementsByTagName("age");
for (int j = 1; j < nodeList2.getLength(); j++) {
Node age_node = nodeList2.item(j);
if (age_node != null) {
String age = document.getElementsByTagName("age").item(j).getTextContent()
String name = document.getElementsByTagName("name").item(j).getTextContent()
String gender = document.getElementsByTagName("gender").item(j).getTextContent().
String role = document.getElementsByTagName("role").item(j).getTextContent()
System.out.println("Age:" + age);
System.out.println("Name:" + name);
System.out.println("Gender:" + name);
System.out.println("Role:" + name);
}} }}
使用以下XML对上述内容进行了测试:
123
29
潘卡吉
男性的
Java开发者
456
35
朱莉
女的
网络开发者
不知道你在这里期待什么。这就是上面发布的预期结果吗?首先,您的XML格式不正确。必须包含根元素,在该元素下可以有多个同名节点。您不能有两个,除非它包装在一个根元素下。@NaveenBharadwaj我已经更新了XML、预期结果和实际结果。你现在能查一下吗。
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document =documentBuilder.parse(file);
NodeList nodeList1 = document.getElementsByTagName("Accountnumber");
for (int k = 0; k < nodeList1.getLength(); k++) {
Node accountnode = nodeList1.item(k); //to read all the tags from account number
if (accountnode != null) {
String acc = document.getElementsByTagName("Accountnumber").item(k).getTextContent();
System.out.println("Account number:" + " " + acc);
NodeList nodeList2 = document.getElementsByTagName("age");
for (int j = 1; j < nodeList2.getLength(); j++) {
Node age_node = nodeList2.item(j);
if (age_node != null) {
String age = document.getElementsByTagName("age").item(j).getTextContent()
String name = document.getElementsByTagName("name").item(j).getTextContent()
String gender = document.getElementsByTagName("gender").item(j).getTextContent().
String role = document.getElementsByTagName("role").item(j).getTextContent()
System.out.println("Age:" + age);
System.out.println("Name:" + name);
System.out.println("Gender:" + name);
System.out.println("Role:" + name);
}} }}
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(file);
NodeList accountDetailsNodes = document.getElementsByTagName("AccountDetails");
for (int i = 0; i < accountDetailsNodes.getLength(); i++) {
Element accountDetailsElem = (Element) accountDetailsNodes.item(i);
String accountnumber = accountDetailsElem.getElementsByTagName("Accountnumber").item(0).getTextContent();
System.out.println("Account #" + (i + 1) + ":");
System.out.println(" Account number: " + accountnumber);
NodeList personalDetailsNodes = accountDetailsElem.getElementsByTagName("PersonalDetails");
for (int j = 0; j < personalDetailsNodes.getLength(); j++) {
Element personalDetailsElem = (Element) personalDetailsNodes.item(j);
String age = personalDetailsElem.getElementsByTagName("age").item(0).getTextContent();
String name = personalDetailsElem.getElementsByTagName("name").item(0).getTextContent();
String gender = personalDetailsElem.getElementsByTagName("gender").item(0).getTextContent();
String role = personalDetailsElem.getElementsByTagName("role").item(0).getTextContent();
System.out.println(" Person #" + (j + 1) + ":");
System.out.println(" Age: " + age);
System.out.println(" Name: " + name);
System.out.println(" Gender: " + gender);
System.out.println(" Role: " + role);
}
}