使用StreamReader文本中的XElement创建新的XDocument

时间:2013-10-18 19:56:48

标签: c# asp.net xml linq-to-xml

我正在尝试获取现有的XML文件并将其“嵌入”另一个“Root”XML文件的另一个节点。假设有一个现有xml文件的路径...

 StreamReader reader = new StreamReader(path);

    string lines = reader.ReadLine();
    while (!reader.EndOfStream)
    {
        lines = reader.ReadLine();
    }

    XDocument doc = new XDocument(
        new XComment("You can copy and paste or open the XML in Excel."),
        new XElement("Root",
            new XElement("logs",lines))
    );

我最终得到这样的事情:

<Root><logs>&lt;log&gt;&lt;username&gt;otonomy&lt;/

需要一些解码编码帮助。

2 个答案:

答案 0 :(得分:3)

改为使用XElement.Load()静态方法:

XDocument doc = new XDocument(
        new XComment("You can copy and paste or open the XML in Excel."),
        new XElement("Root",
            new XElement("logs"
                XElement.Load(path)))
    );

可以直接使用path,因此您根本无需处理StreamReader

答案 1 :(得分:1)

尝试:

string lines = File.ReadAllText( path );

XDocument doc = new XDocument(
    new XComment( "You can copy and paste or open the XML in Excel." ),
    new XElement( "Root",
        new XElement( "logs", XElement.Parse( lines ) ) ) );