【问题标题】:Merging similar xml documents合并相似的xml文档
【发布时间】:2009-08-14 05:40:57
【问题描述】:

我有几个 XDocument 看起来像:

<Test>
  <element
      location=".\jnk.txt"
      status="(modified)"/>
 <element
     location=".\jnk.xml"
     status="(overload)"/>
</Test>

在 C# 中,我创建了一个新的 XDocument:

XDocument mergedXmlDocs = new XDocument(new XElement("ACResponse"));

并尝试从其他 XDocument 中添加节点:

for (ti = 0; (ti < 3); ++ti)
{
    var query = from xElem in xDocs[(int)ti].Descendants("element")
        select new XElement(xElem);

    foreach (XElement xElem in query)
    { 
        mergedXmlDocs.Add(xElem);
    }
}

在运行时,我收到关于 Add 将如何创建格式错误的文档的错误。
我做错了什么?
谢谢...

(我看到了这个问题——Merge XML documents——但创建 XSLT 转换对于看似简单的操作来说似乎是额外的麻烦。)

【问题讨论】:

  • 你想用什么语言来做这个?

标签: c# xml


【解决方案1】:

你很亲密。尝试换行

mergedXmlDocs.Add(xElem);

mergedXmlDocs.Root.Add(xElem);

问题是每个 XML 文档只能包含 1 个根节点。您现有的代码正在尝试在根级别添加所有节点。您需要将它们添加到现有的顶级节点。

【讨论】:

    【解决方案2】:

    我不确定您使用的是哪种编程语言,但对于大多数编程语言来说,都有大量的 XML 支持类。它们中的大多数都允许解析甚至添加元素。我会保留 1 个主文件,然后解析每个新文件,将新文件中的元素添加到主文件中。

    编辑:抱歉,您似乎已经在这样做了。

    【讨论】:

    • 这就是我想要做的......将来自多个 XDocuments 的所有“元素”元素添加到 mergeXmlDocs XDocument。运行时错误是:“此操作会创建结构不正确的文档。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    相关资源
    最近更新 更多