Nic*_*ick 4 c# xml doctype xmldocument dtd
我在生成需要自动生成的XML然后手动上载到客户端站点以进行验证时遇到问题.
客户的规范要求我们在顶部包含DTD声明.那是
<!DOCTYPE TheFile System "TheDTD.dtd" "">
Run Code Online (Sandbox Code Playgroud)
因此,当我尝试生成XML行时,以编程方式
XmlDocumentType doctype;
doctype = doc.CreateDocumentType("TheFile", null, "TheDTD.dtd", null);
doc.AppendChild(doctype);
Run Code Online (Sandbox Code Playgroud)
失败并且它问我"TheDTD.dtd"应该存在于windows目录中:C:\ Windows\System32\inetsrv
后来如果我想读取XmlDoc那一行
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlLocation);
Run Code Online (Sandbox Code Playgroud)
失败并且它询问我"TheDTD.dtd"应该存在于存储整个项目的Project目录中
我不想实际验证DTD,我只是想引用,因为验证发生在客户端.有没有办法在XML中添加行""而不必在两个不同的位置复制实际的.dtd?
如果我们公开声明并将其更改为
<!DOCTYPE TheFile PUBLIC "TheDTD.dtd" "">
Run Code Online (Sandbox Code Playgroud)
然后一切正常,但客户要求它应该是SYSTEM而不是PUBLIC.我希望如果实际的.dtd丢失,CreateDocumentType和Load方法不会崩溃,因为此时我甚至没有这个文件而且我的目的不需要它.
谢谢
小智 8
您可以将XmlDocument.XmlResolver属性设置为null.这会禁用外部XML资源(dtd,schemas)的加载.
doc.XmlResolver= null;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3466 次 |
| 最近记录: |