首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用XDocument合并两个xml文档中的问题

使用XDocument合并两个xml文档中的问题
EN

Stack Overflow用户
提问于 2016-06-29 02:30:25
回答 1查看 264关注 0票数 1

现有的XML文件(test.xml)内容如下

代码语言:javascript
复制
<manifest xmlns:imsmd="http://ltsc.ieee.org/xsd/LOM">
<resources>
<resource>
<file href="default.xml">
<metadata>
<imsmd:lom />
</metadata>
</file>
</resource>
</resources>
</manifest>

我需要的是添加新节点,以便最后的输出类似于:

代码语言:javascript
复制
<manifest xmlns:imsmd="http://ltsc.ieee.org/xsd/LOM">
<resources>
<resource>
<file href="default.xml">
<metadata>
<imsmd:lom />
</metadata>
</file>

<file href="testimg.png">
<metadata>
<imsmd:lom />
</metadata>
</file>
</resource>
</resources>
</manifest>

到目前为止,我的尝试(虽然不完全正确)如下:

代码语言:javascript
复制
XNamespace ns = @"http://ltsc.ieee.org/xsd/LOM";
            XNamespace lomns = ":lom";


            var doc = XDocument.Load(@"D:\test.xml");

            var result = new XDocument(
                new XElement(ns + "manifest",                   
                    new XElement("file", new XAttribute("href", "testimg.png"),
                    new XElement("metadata", new XElement(lomns + "imsmd"))

                     )
                 )
             );

            //merge
            doc.Root.Add(result.Root.Elements());

其输出是

代码语言:javascript
复制
<manifest xmlns:imsmd="http://ltsc.ieee.org/xsd/LOM">
  <resources>
    <resource>
      <file href="default.xml">
        <metadata>
          <imsmd:lom />
        </metadata>
      </file>
    </resource>
  </resources>
  <file href="testimg.png">
    <metadata>
      <imsmd xmlns=":lom" />
    </metadata>
  </file>
</manifest>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-29 02:43:38

代码正在将新元素添加到根中,但是根据所需的输出,您提到了一个新元素(file)应该是resource

resource中定位元素xml,然后添加元素。

代码语言:javascript
复制
 doc.Descendants("resource")
    .ElementAt(0)
    .Add(new XElement("file", new XAttribute("href", "testimg.png"),
         new XElement("metadata", new XElement(doc.Root.GetNamespaceOfPrefix("imsmd")+ "lom"))));

输出:

代码语言:javascript
复制
 <manifest xmlns:imsmd="http://ltsc.ieee.org/xsd/LOM">
  <resources>
    <resource>
      <file href="default.xml">
        <metadata>
          <imsmd:lom />
        </metadata>
      </file>
      <file href="testimg.png">
        <metadata>
          <imsmd:lom />
        </metadata>
      </file>
    </resource>
  </resources>
</manifest>

检查这个Demo

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

https://stackoverflow.com/questions/38089369

复制
相关文章

相似问题

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