在伪xml文档到达XmlDocument.Load之前修改它

时间:2012-06-20 17:01:49

标签: c# xml .net-3.5

我有一系列...伪xml文件。我的意思是,它们几乎是XML文件,但它们缺少xml声明和根节点。例如从概念上讲,它可能看起来像这样:

<a>info</a>
<b>info2</b>

我想要做的是将其加载到XmlDocument对象中,例如类似于此:

    XmlDocument xml = new XmlDocument();

    using (StreamReader file = new StreamReader(File.Open(@"file.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
    {
        xml.Load(file);
    }

这是抛出错误,很可能是由于格式错误的伪xml文件造成的。我需要以某种方式处理在根节点到达Load之前添加它。我不想修改实际文件,或者必须将任何内容保存到磁盘(例如新的临时文件)。我坚持这个,有什么建议吗?

2 个答案:

答案 0 :(得分:2)

XmlDocument还有一个解析Xml字符串的LoadXml() method。您可以将文件内容加载到字符串中,添加声明并调用LoadXml()。 当然,当您使用长文件时,这可能会耗费大量内存,请注意这一点。

答案 1 :(得分:1)

你可以试试这个

var xmlString = file.ReadToEnd();
xmlString = "<root>" + xmlString + "</root>";
xml.LoadXml(xmlString);