将XDocument代码转换为XmlDocument

时间:2017-05-09 23:12:02

标签: c# linq-to-xml xmldocument

大家好我试图将下面的代码从XDocument转换为XmlDocument(我需要在XmlDocument中)你是否知道需要更改的不同方法?我在XmlDocument和XElement类中查找了其中的一些,但我的更改没有编译。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.Data;  

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);
            XElement root = (XElement)doc.FirstNode;

            DataTable dt = new DataTable();
            dt.Columns.Add("Parent", typeof(string));
            dt.Columns.Add("Child", typeof(string));
            dt.Columns.Add("Attribute", typeof(string));
            dt.Columns.Add("Value", typeof(string));

            foreach(XElement parent in root.Elements())
            {
                string parentTag = parent.Name.LocalName;

                foreach (XElement child in parent.Elements())
                {
                    string childTag = child.Name.LocalName;

                    foreach (XAttribute attribute in child.Attributes())
                    {
                        dt.Rows.Add(new object[] { parentTag, childTag, attribute.Name, (string)attribute });
                    }
                }
            }
        }
    }
}

由于

1 个答案:

答案 0 :(得分:0)

为什么不将最终的XDocument读入新的XmlDocument,而不是重构现有的代码库?

XDocument xDocument = 
    XDocument.Load("file.xml");

...other manipulations...

XmlDocument xmlDocument =
    new XmlDocument();

// Read the XDocument as a simple XML string:
xmlDocument.LoadXml(xDocument.ToString());

// Alternatively, read the XDocument with an XmlReader:
xmlDocument.Load(xDocument.CreateReader());