Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用DOM获取具有相同节点名的XML文件中的XML节点数_Java_Xml_Parsing_Dom_Collections - Fatal编程技术网

Java 使用DOM获取具有相同节点名的XML文件中的XML节点数

Java 使用DOM获取具有相同节点名的XML文件中的XML节点数,java,xml,parsing,dom,collections,Java,Xml,Parsing,Dom,Collections,我需要解析一个xml文件,将值存储到数据库中。。 请考虑下面的XML <Name NameType="Primary Name"> <NameValue> <FirstName>Hassan</FirstName> <MiddleName>Dahir</MiddleName> <Surname>Aweys</Surname> <OriginalScriptNam

我需要解析一个xml文件,将值存储到数据库中。。 请考虑下面的XML

<Name NameType="Primary Name">
 <NameValue>
   <FirstName>Hassan</FirstName> 
   <MiddleName>Dahir</MiddleName> 
   <Surname>Aweys</Surname> 
   <OriginalScriptName>حسن ظاهرعويس</OriginalScriptName> 
   <OriginalScriptName>ハッサン・ダヒル・アウェイス</OriginalScriptName> 
   <OriginalScriptName>アウェス、ハッサン・ダヒル</OriginalScriptName> 
   <OriginalScriptName>ウワイス、ハッサン・ターヒル</OriginalScriptName> 
 </NameValue>
</Name>
这样我们就可以在插入数据库时获得映射值

  Map.get("OriginalScriptName","حسن ظاهرعويس,ハッサン・ダヒル・アウェイス,アウェス、ハッサン・ダヒル,ウワイス、ハッサン・ターヒル")

   i.e., Map.get("OriginalScriptName",value)
   let value = ,ハッサン・ダヒル・アウェイス,アウェス、ハッサン・ダヒル,ウワイス、ハッサン・ターヒル

我已经使用xpath创建了一个解决方案。创建一个基于xml的java程序。 如果xml发生变化,那么这个程序将无法工作。 还有一件事: 您的xml应该以

 <?xml version="1.0" encoding="UTF-8"?>
    حسن ظاهرعويس,ハッサン・ダヒル・アウェイス,アウェス、ハッサン・ダヒル,ウワイス、ハッサン・ターヒル
  Map.get("OriginalScriptName","حسن ظاهرعويس,ハッサン・ダヒル・アウェイス,アウェス、ハッサン・ダヒル,ウワイス、ハッサン・ターヒル")

   i.e., Map.get("OriginalScriptName",value)
   let value = ,ハッサン・ダヒル・アウェイス,アウェス、ハッサン・ダヒル,ウワイス、ハッサン・ターヒル
 <?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<Name NameType="Primary Name">
<NameValue>
   <FirstName>Hassan</FirstName> 
   <MiddleName>Dahir</MiddleName> 
   <Surname>Aweys</Surname> 
   <OriginalScriptName>حسن ظاهرعويس</OriginalScriptName> 
   <OriginalScriptName>ハッサン・ダヒル・アウェイス</OriginalScriptName> 
   <OriginalScriptName>アウェス、ハッサン・ダヒル</OriginalScriptName> 
   <OriginalScriptName>ウワイス、ハッサン・ターヒル</OriginalScriptName> 
</NameValue>
</Name>
package com.xxxxx;

import org.w3c.dom.*;

import javax.xml.parsers.*;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;

import java.io.*;
import java.util.HashMap;
public class ReadXMLFileSax {
      public static void main(String argv[]) {
    try {

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document document = builder.parse(new File("D:\\xxxx.xml"));

    Element root = document.getDocumentElement();

    XPath xPath = XPathFactory.newInstance().newXPath();
    NodeList nodes = (NodeList)xPath.evaluate("/Name[@NameType='Primary Name']/NameValue/OriginalScriptName",
            document.getDocumentElement(), XPathConstants.NODESET);
    String OriginalScriptName = "";
    HashMap<String, String> Map = new HashMap<String, String>();
    for (int i = 0; i < nodes.getLength(); ++i) {
        Element e = (Element) nodes.item(i);
      //  System.out.println(e.getTextContent());
        OriginalScriptName = OriginalScriptName+","+e.getTextContent();
    }
    System.out.println("OriginalScriptName "+OriginalScriptName.substring(1));
    Map.put("OriginalScriptName", OriginalScriptName.substring(1));
    }catch (Exception e) {
    e.printStackTrace();
    }

      }
    }
OriginalScriptName حسن ظاهرعويس,ハッサン・ダヒル・アウェイス,アウェス、ハッサン・ダヒル,ウワイス、ハッサン・ターヒル