读取XML文件中的子节点数据C#

时间:2018-03-19 12:40:05

标签: c# xml

我一直在尝试读取XML文件并将其写入另一个XML。我已成功读取和写入数据,但由于嵌套子节点正在创建问题,因此缺少某些内容。但是,如果节点有一个子节点,我已经完成了对场景的读写。但要与#34;任意数量的孩子制作通用"正在创造问题。

XmlDocument doc = new XmlDocument();
        doc.Load(@"\\File Server\source_FILE.xml");
        string dest_path = @"\\File Server\dest_FILE" + rnd.Next() + ".xml";
        XmlDocument doc2 = new XmlDocument();
        XmlTextWriter xw = new XmlTextWriter(dest_path, null);
        try
        {
            XmlNodeList elemList = doc.GetElementsByTagName(@"Article");
            xw.WriteStartElement("Article", null);
            for (int i = 0; i < elemList[0].ChildNodes.Count; i++)
            {
                var test = elemList[0].ChildNodes.Item(i).ChildNodes.Item(0).GetType();//.NextSibling;
                if (test.Name == "XmlElement")
                {
                    int t = 0;
                    xw.WriteStartElement(elemList[0].ChildNodes.Item(i).Name);
                    while (t < elemList[0].ChildNodes.Item(i).ChildNodes.Count)
                    {
                        xw.WriteElementString(elemList[0].ChildNodes.Item(i).ChildNodes.Item(t).Name, elemList[0].ChildNodes.Item(i).ChildNodes.Item(t).InnerText);
                        t++;
                    }
                    xw.WriteEndElement();
                }
                else
                {
                    xw.WriteElementString(elemList[0].ChildNodes.Item(i).Name, elemList[0].ChildNodes.Item(i).InnerText);
                }
            }
            xw.WriteEndElement();
            xw.Close();
            doc2.Save(xw);

我的XML文件就像

<Article>
   <Headline>Text is here all</Headline>
      <City>
        <A>
          <B></B>
        </A>
      </City>
      <Date>15 November 2010</Date>
      <Source>
         <P>ABC</P>   
      </Source>
      <Text>
         <P> 
         </P>
      </Text>         
      <Category>abc</Category>
      <Subject>_</Subject>
      <Keyword>_</Keyword>
      <Country>_</Country>
</Article>

可能我必须创建递归函数,但我需要帮助

1 个答案:

答案 0 :(得分:0)

使用Linq:

var mainDoc = XDocument.Load("File1.xml");
mainDoc.Root.Add(XDocument.Load("File2.xml").Root.Elements());

现在mainDoc将包含第二个文件的所有元素。