C# XmlDocument.Load是否不处理DTD?
我正在尝试构建和开发一个安全POC,这段代码是一个应用程序的一部分,我已经将它提取到一个较小的应用程序中,因为我对它有一些困难C# XmlDocument.Load是否不处理DTD?,c#,xml,dtd,C#,Xml,Dtd,我正在尝试构建和开发一个安全POC,这段代码是一个应用程序的一部分,我已经将它提取到一个较小的应用程序中,因为我对它有一些困难 String str = "<?xml version=\"1.0\"?><!DOCTYPE foo[<!ELEMENT foo ANY> <!ENTITY word \"A\">]><foo>&word;</foo>"; System.Xml.XmlDocument xDoc =
String str = "<?xml version=\"1.0\"?><!DOCTYPE foo[<!ELEMENT foo ANY> <!ENTITY word \"A\">]><foo>&word;</foo>";
System.Xml.XmlDocument xDoc = new System.Xml.XmlDocument();
xDoc.LoadXml(str);
xDoc.Save(@"C:\Temp\xdoc.xml");
String str=“]>&word;”;
System.Xml.XmlDocument xDoc=new System.Xml.XmlDocument();
LoadXml(str);
保存(@“C:\Temp\xDoc.xml”);
假设xml字符串包含一个DTD实体词,它在我的实际xml中被引用。加载文档时,我希望DTD得到处理,因此用字符串“A”替换xml中提到的实体“word”。然后将整个文档写回磁盘。但是,当我检查xDoc.xml时。实体扩展/替换尚未发生
为什么不呢 您可以在代码中使用的
LoadXml
方法中找到以下内容:
此方法不进行DTD或架构验证。如果你愿意
要进行验证,请使用Load
方法并将
XmlValidatingReader
。有关加载时间的示例,请参见XmlDocument
验证
,以及其他许多提供DTD验证的代码示例。您的标题是XDocument,但您在代码中使用的是XmlDocument。你问的是XmlDocument吗?可能是@Alireza的副本-不完全相同,那里的答案也不是特别有用。我想在这里明确说明这段代码的问题所在。@Vcsjones-是的,我问的是XmlDocument。