【问题标题】:How to merge two different child nodes in the same XML file如何在同一个 XML 文件中合并两个不同的子节点
【发布时间】:2011-06-29 23:31:27
【问题描述】:

我有一个 XML 文件,我想合并两个不同的 CONTACT 子节点。

我检查了这些网站,它显示了如何将两个不同的 xml 文件合并到一个文件中。

http://www2.informatik.hu-berlin.de/~obecker/XSLT/#merge

Merge XML documents

在我的例子中,这是我在 xml 文件中的第一个联系人:

<CONTACT>
<PDE-Identity>N65539</PDE-Identity>
<FirstName>Arun_niit</FirstName>
<LastName>Arun_niit</LastName>
<Facebook-ID/>
<EMAILS>
<EMail>
<Type>yahoo</Type>
<Value>nura_ice@yahoo.co.in</Value>
</EMail>
</EMAILS>
</CONTACT>

这是文件中的第二个联系人:

<CONTACT>
<PDE-Identity>N65567</PDE-Identity>
<FirstName>Arun_niit</FirstName>
<LastName>Ramanathan</LastName>
<Facebook-ID/>
<EMAILS>
<EMail>
<Type>gmail</Type>
<Value>arun_niit@gmail.com</Value>
</EMail>
<EMail>
<Type>yahoo</Type>
<Value>nura_ice@yahoo.co.in</Value>
</EMail>
</EMAILS>
</CONTACT>

我知道这两个联系人属于同一个人。如何将这两个联系人合并到同一个 xml 文件中。

原始 XML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<CONTACTS>

<CONTACT>
<PDE-Identity>N65539</PDE-Identity>
<FirstName>Arun_niit</FirstName>
<LastName>Arun_niit</LastName>
<Facebook-ID/>
<EMAILS>
<EMail>
<Type>yahoo</Type>
<Value>nura_ice@yahoo.co.in</Value>
</EMail>
</EMAILS>
</CONTACT>

<CONTACT>   
<PDE-Identity>N65567</PDE-Identity>
<FirstName>Arun_niit</FirstName>
<LastName>Ramanathan</LastName>
<Facebook-ID/>
<EMAILS>
<EMail>
<Type>gmail</Type>
<Value>arun_niit@gmail.com</Value>
</EMail>
<EMail>
<Type>yahoo</Type>
<Value>nura_ice@yahoo.co.in</Value>
</EMail>
</EMAILS>
</CONTACT>


<CONTACT>
<PDE-Identity>N65567</PDE-Identity>
<FirstName>Rangarajkarthik</FirstName>
<LastName>karthik Rangaraj</LastName>
<Facebook-ID/>
<EMAILS>
<EMail>
<Type>gmail</Type>
<Value>kart2006@gmail.com</Value>
</EMail>
<EMail>
<Type>yahoo</Type>
<Value>karthikrangaraj@yahoo.com</Value>
</EMail>
</EMAILS>
</CONTACT>

<CONTACTS>

【问题讨论】:

  • 欢迎来到 SO。为了回答您的问题,我们需要更多地了解您工作的环境。您打算使用 XSLT 吗?文本编辑器?当您说“合并”时,您打算如何处理冲突的数据项,例如姓氏?不可能编写一个“知道”如何处理冲突的通用解决方案。
  • 嗨吉姆加里森,谢谢。我不知道如何继续这个......但我正在使用 XUL 开发一个 Firefox 扩展。我想知道如何以 XUL 格式或 html 格式向用户显示此信息,并让我用户在同一个 XML 文件中合并两个不同的联系人。例如,考虑我们有复选框二选择两个不同的联系人,我们可以有一个按钮来合并。这是正确的做法吗?如果我感到困惑,请回复我。谢谢。
  • 你正在尝试做的是一个相对复杂的任务,需要一个用户界面,以便用户可以告诉你的扩展如何处理冲突。如果没有这样的接口,扩展将没有用。您的大部分工作(即 90%)将用于设计和实现界面,并且在用户告诉您在每个冲突中该怎么做之后合并联系人将是最容易的部分。
  • 我假设您将使用 Javascript 编写代码(我从未做过任何 FF 扩展工作)。在这种情况下,您需要研究用于将 XML 解析为 DOM 表示的 Javascript 库。
  • 好吧,我找不到任何合适的教程,其中包含使用 java 脚本解析 FF 中的 xml 文件的示例。我在编程方面没有太多经验,但我仍在努力。我正在尝试使用 java-script 解析 xml 文件,但我做不到。请检查这个链接我已经发布了关于这个问题的另一个问题:stackoverflow.com/questions/6518659/…

标签: xml merge tags


【解决方案1】:

大多数浏览器已经支持在 javascript 中解析 XML。这是一个示例 sn-p,您必须对其进行调整以解析您的特定输入。

if (window.DOMParser)
  {
  parser=new DOMParser();
  xmlDoc=parser.parseFromString(text,"text/xml");
  }
else // Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(text);
  } 

有关更多信息,我建议您在 Google 上搜索 javascript xml dom

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多