我有一个从阅读器加载XML文档所需的代码,如下所示:
private static XmlDocument GetDocumentStream(string xmlAddress)
{
var settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Ignore;
settings.ValidationFlags = XmlSchemaValidationFlags.None;
var document = new XmlDocument();
var reader = XmlReader.Create(xmlAddress, settings);
document.Load(reader);
return document;
}
但是在我的XML文档中,我有类似这样的节点:
<link rel="edit-media" title="Package"
href="Packages(Id='51Degrees.mobi',Version='0.1.11.9')/$value" />
我的理解是该节点应该像
<link rel="edit-media" title="Package"></link>
但是,我不创建Xml文档,我当然不想更改它,但是当我尝试加载XML文档时,document.Load行会抛出异常。更具体地说,XML文件是nuPack项目的RSS源。
对于如何正确阅读本文档,任何想法都会非常适用。
答案 0 :(得分:1)
在我的screnario中,我使用WebClient类来下载数据并将其加载到由XmlDocument直接加载的流中:
private static System.Xml.XmlDocument GetDocumentStream(string xmlAddress)
{
System.Xml.XmlDocument document;
byte[] xmlBlob = new System.Net.WebClient().DownloadData(xmlAddress);
using (System.IO.MemoryStream temp = new System.IO.MemoryStream(xmlBlob))
{
document = new System.Xml.XmlDocument();
document.Load(temp);
}
return document;
}
所以我有一个脱机副本作为字节数组,不需要通过XML验证器解析它。