我有一系列...伪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
之前添加它。我不想修改实际文件,或者必须将任何内容保存到磁盘(例如新的临时文件)。我坚持这个,有什么建议吗?
答案 0 :(得分:2)
XmlDocument还有一个解析Xml字符串的LoadXml() method。您可以将文件内容加载到字符串中,添加声明并调用LoadXml()。 当然,当您使用长文件时,这可能会耗费大量内存,请注意这一点。
答案 1 :(得分:1)
你可以试试这个
var xmlString = file.ReadToEnd();
xmlString = "<root>" + xmlString + "</root>";
xml.LoadXml(xmlString);