繁体   English   中英

合并 xml 文件 java

[英]Merging of xml files java

I have two different xml files described as below and want to merge these xml files and get the expected output may be using xpath or dom parsing but not XSLT since the xmls are always not the same

XML1.xml

<personinfo>
   <person>
     <name><name>
     <age></age>
     <address>
     <street></street>
     <city></city>
     <address>
   </person>
   <person>
     <name><name>
     <age></age>
     <address>
     <street></street>
     <city></city>
     <address>
   </person>
   <person>
     <name><name>
     <age></age>
     <address>
     <street></street>
     <city></city>
     <address>
   </person>
</personinfo>

XML2.xml

<personinfo>
   <person>
     <name>tom<name>
     <age>26</age>
     <address>
     <street>main street</street>
     <city>washington</city>
     <address>
   </person>
   <person>
     <name>mike<name>
     <age>30</age>
     <address>
     <street>first street</street>
     <city>dallas</city>
     <address>
   </person>
</personinfo>

预期。xml

<personinfo>
   <person>
     <name>tom<name>
     <age>26</age>
     <address>
     <street>main street</street>
     <city>washington</city>
     <address>
   </person>
   <person>
     <name>mike<name>
     <age>30</age>
     <address>
     <street>first street</street>
     <city>dallas</city>
     <address>
   </person>
   <person>
     <name><name>
     <age></age>
     <address>
     <street></street>
     <city></city>
     <address>
   </person>
</personinfo>

提前致谢....

如果您可以灵活地创建一个新的 xml 文件,您可以使用任何您熟悉的解析器来解析它们中的每一个。 将标签存储在 String LinkedLists 的 LinkedList 中,并将标签值存储在以下类型的 HashMap 中: LinkedHashMap data= new LinkedHashMap();

然后,您可以从链表 append 中调用标签名称,从 Hash Map 中调用标签值,并将它们写出到新的 Z31501BB10ZCFED366 文件中。 当我合并 XML 时,这是我使用的过程。 希望这可以帮助

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
doc.getDocumentElement().normalize();
NodeList nodeLst = doc.getElementsByTagName("employee");
for (int s = 0; s < nodeLst.getLength(); s++) 
{
stkey=getXMLData(s,nodeLst,"id");
     keylist.add(stkey);// adding integer keys to a Linked List
data.put(stkey, stkey);                 
data.put(stkey+"first",getXMLData(s,nodeLst,"firstname"));                  
data.put(stkey+"last",getXMLData(s,nodeLst,"lastname"));                    
     data.put(stkey+"loc",getXMLData(s,nodeLst,"location"));    
     data.put(stkey+"occ",getXMLData(s,nodeLst,"occupation"));

}

这将获得 hash map 中的标签值和链表中的标签名称。 为了让您的工作更轻松,您可以将 append 类型的标签添加到 hashmap 键中。 例如:如果我的密钥是员工 ID(在我的情况下),我 append “首先”给它。 假设某人有一个 id:10001。他的数据将存储为:10001,然后是 10001first,10001last,10001loc,10001occ。 现在,您可以调用每个 hashmap 键,根据附加的标签名称获取元素并连接到您的 xml 文件。 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM