使用非标准标记加载XMLDocument时出现问题

时间:2010-12-26 01:50:28

标签: c# xml

我有一个从阅读器加载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源。

对于如何正确阅读本文档,任何想法都会非常适用。

1 个答案:

答案 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验证器解析它。