我有一个很大的xml文件,其中需要查找匹配的合同号,然后需要读取父节点的所有剩余元素,包括子节点。我是测试人员,正在努力寻找可行的解决方案。
示例XML文件,其中我的原始文件非常大,无法在此处共享。
我需求是搜索合同,并基于该文档下读取的整个值。我需要使用这些值与应用程序‘’进行比较
<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节点
“”“
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");
}
}
}
} “”“
发布于 2020-04-21 15:04:38
‘我能弄明白。为了遍历合约id节点,我需要遍历子集。
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;
}
}
} “”“
https://stackoverflow.com/questions/61321046
复制相似问题