【发布时间】:2018-05-20 12:10:20
【问题描述】:
我正在尝试使用 Windows 10 通用平台中包含的 Window.Data.Xml.Dom 命名空间加载 XML 文件。我必须这样做,因为我需要使用 XSTLTranslator 转换此 XML
我正在使用以下代码来实现:
var xslfile = Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(xslFilePath)
.GetAwaiter().GetResult();
var xslDocument = XmlDocument.LoadFromFileAsync(xslfile).GetAwaiter().GetResult();
var xsltPocessor = new Windows.Data.Xml.Xsl.XsltProcessor(xslDocument);
var xmlDocumentToTransform = new XmlDocument();
xmlDocumentToTransform.LoadXml(xmlToTransform);
var generatedHtml = xsltPocessor.TransformToString(xmlDocumentToTransform);
我的问题显然是当我尝试使用
将 XML 加载到 XML 文档中时var xmlDocumentToTransform = new XmlDocument();
xmlDocumentToTransform.LoadXml(xmlToTransform);
在转换它之前,我收到错误 0xC00CE584。请参阅下面的 XML 示例:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE dmodule[
<!NOTATION cgm PUBLIC "-//USA-DOD//NOTATION Computer Graphics Metafile//EN">
<!NOTATION jpeg PUBLIC "+//ISBN 0-7923-9432-1::Graphic Notation//NOTATION
Joint Photographic Experts Group Raster//EN">
<!NOTATION swf PUBLIC "-//S1000D//NOTATION X-SHOCKWAVE-FLASH 3D Models
Encoding//EN">
<!NOTATION png PUBLIC "-//W3C//NOTATION Portable Network Graphics//EN">
]>
<dmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dc="http://www.purl.org/dc/elements/1.1/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:noNamespaceSchemaLocation="http://www.s1000d.org/S1000D_4-
1/xml_schema_flat/proced.xsd">
<rdf:Description>
<dc:title>Tire - Remove and install a new item</dc:title>
</rdf:Description>
</dmodule>
我认为错误来自标头中的 !Doctype 节点,因为一旦我删除此信息,我在解析 xml 时就没有任何错误。这是预期的行为还是错误?在经典 .Net 中,我没有收到此错误。
PS : XML 来自作为 S1000D 规范示例的示例提供的自行车数据集
【问题讨论】:
-
看看添加以下代码是否适合你stackoverflow.com/questions/13854068/…XmlReaderSettings settings = new XmlReaderSettings(); settings.DtdProcessing = DtdProcessing.Parse;
标签: uwp win-universal-app xmldocument