附加XML节点C#

时间:2017-08-15 17:14:46

标签: c# xml

我有两个需要合并的xml文件。

Test1.xml在

之下
<ProfileSearchResponse xmlns="xxxRestServices" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <Profile>
    <Category>
      <a>Test1 string</a>
      <b>Test3 string</b>
     </Category>
    <Chapters>
        <Chapter>
            <Name>bi weekly Update</Name>
        </Chapter>
    </Chapters>
        <Disclaimer>"The purpose of the Profiles is xxxxxx </Disclaimer> 
        <RelatedProfiles>Blah blah testing this  </RelatedProfiles>
</Profile>
</ProfileSearchResponse>

Test2.xml位于

之下
<ProfileSearchResponse xmlns="xxxRestServices" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <Profile>
        <Chapters>
            <Chapter>
                <Name>Previous bi weekly Updates</Name>
            </Chapter>
        </Chapters>
        <Disclaimer>"The purpose of the Profiles is xxxxxx </Disclaimer> 
    </Profile>
</ProfileSearchResponse>

这是预期的输出。

<ProfileSearchResponse xmlns="xxxRestServices" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <Profile>
    <Category">
      <a>Test1 string</a>
      <b>Test3 string</b>
     </Category>
    <Chapters>
        <Chapter>
            <Name>bi weekly Update</Name>
        </Chapter>
        <Chapter>
            <Name>Previous bi weekly Updates</Name>
        </Chapter>
    </Chapters>
        <Disclaimer>"The purpose of the Profiles is xxxxxx </Disclaimer> 
        <RelatedProfiles>Blah blah testing this  </RelatedProfiles>
</Profile>
</ProfileSearchResponse>

我们正在尝试从Test2.xml中获取“Chapter”节点并将其附加到Test1.xml。 这是我写的C#程序的一部分。

XmlDocument document1 = new XmlDocument();
            XmlDocument document2 = new XmlDocument();
            document1.Load(@"C:\test1.xml");
            document2.Load(@"C:\test2.xml");
            XmlNode myNode = document2.DocumentElement.SelectSingleNode("//Chapter");
        document1.DocumentElement.AppendChild(myNode);

我不确定为什么myNode为null。我不太确定如何附加节点。任何帮助表示赞赏。

由于 MR

1 个答案:

答案 0 :(得分:0)

  

我不确定为什么myNode为空

您忘记使用XmlNamespace xxxRestServices

XmlDocument document2 = new XmlDocument();
document2.Load(@"d:\temp\a.txt");

XmlNamespaceManager mgr = new XmlNamespaceManager(document2.NameTable);
mgr.AddNamespace("ns", "xxxRestServices");

XmlNode myNode = document2.DocumentElement.SelectSingleNode("//ns:Chapter",mgr);