首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于搜索的XML文件解析及父、子项读取

基于搜索的XML文件解析及父、子项读取
EN

Stack Overflow用户
提问于 2020-04-20 19:10:47
回答 1查看 19关注 0票数 1

我有一个很大的xml文件,其中需要查找匹配的合同号,然后需要读取父节点的所有剩余元素,包括子节点。我是测试人员,正在努力寻找可行的解决方案。

示例XML文件,其中我的原始文件非常大,无法在此处共享。

我需求是搜索合同,并基于该文档下读取的整个值。我需要使用这些值与应用程序‘’进行比较

代码语言:javascript
复制
<FILE>
<Document RECORD="1">
    <Contract>701</Contract>
    <Contact></Contact>
    <Plan></Plan-Series>
    <Company-Cd>002</Company>
    <Child1>
         <ele1>dds</ele1>
        <ele2>dds</ele2>
    </Child1>
    <Child2>
         <ele1>dds</ele1>
        <ele2>dds</ele2>
    </Child2>
    <Transfers OCCURRENCE="1">
        <ele1>dds</ele1>
        <ele2>dds</ele2>
    </Transfers>
    <Transfers OCCURRENCE="2">
        <ele1>dds</ele1>
        <ele2>dds</ele2>
    </Transfers>
    <Transfers OCCURRENCE="3">
        <ele1>dds</ele1>
        <ele2>dds</ele2>
    </Transfers>
</Document
<Document RECORD="2">
    <Contract>702</Contract>
    <Contact></Contact>
    <Plan></Plan-Series>
    <Company-Cd>002</Company>
    <Child1>
         <ele1>dds</ele1>
        <ele2>dds</ele2>
    </Child1>
    <Child2>
         <ele1>dds</ele1>
        <ele2>dds</ele2>
    </Child2>
    <Transfers OCCURRENCE="1">
        <ele1>dds</ele1>
        <ele2>dds</ele2>
    </Transfers>
    <Transfers OCCURRENCE="2">
       <ele1>dds</ele1>
        <ele2>dds</ele2>
    </Transfers>
    <Transfers OCCURRENCE="3">
        <ele1>dds</ele1>
        <ele2>dds</ele2>
    </Transfers>
</Document  
</FILE> 

‘由于文本元素或其他原因,它不会连接到id节点

“”“

代码语言:javascript
复制
File fXmlFile = new File(inputFile);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
nList = doc.getElementsByTagName("Document");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node node = nList.item(temp);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
if (element.getNodeName()=="Contract-Id") {
String nodetext=element.getTextContent();
if(nodetext=="77530006") {
System.out.println("got it");
        }
    }
  }     
}   

“”“

EN

回答 1

Stack Overflow用户

发布于 2020-04-21 15:04:38

‘我能弄明白。为了遍历合约id节点,我需要遍历子集。

代码语言:javascript
复制
File fXmlFile = new File(inputFile);
       DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
       DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
       Document doc = dBuilder.parse(fXmlFile);
       doc.getDocumentElement().normalize();

            NodeList nList;
            NodeList nChild;
            NodeList nSubset;

            nList = doc.getElementsByTagName("Document");
            aa:
            for (int temp = 0; temp < nList.getLength(); temp++) {
                Node node = nList.item(temp);
                nChild=node.getChildNodes();

                bb:
                  for(int temp1=0;temp1<nChild.getLength();temp1++) {
                      Element element1 =  (Element) node;
                      Node node1=nChild.item(temp1);
                      System.out.println("Child nodes are:"+node1.getNodeName());
                      if (node1.getNodeName()=="Contract-Id") {
                            String nodetext=node1.getTextContent();

                            if(nodetext.equalsIgnoreCase(ContractNumber)) {
                                System.out.println("Contract number found");
                                Node element2 =  (Element) node;
                                element2=node1.getParentNode();
                                nSubset=element2.getChildNodes();
                                visitChildNodes(nSubset, "Document", listUniqueEmployeeNames,empMap);
                                //System.out.println("Child nodes are:"+empMap);
                                empMap.values().removeAll(Collections.singleton(null));
                                break;
                            }
                            break bb;   
                        }

                  }
            } 

“”“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61321046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档