Tag: dtd

使用DTDvalidation – 强制关闭连接

我正在validation文档中带有DTD的文档,该文档不在我的机器上,它存储在互联网上。 我目前收到以下exception System.Xml.XmlException: An error has occurred while opening external DTD ‘http://xml.cxml.org/schemas/cXML/1.2.020/cXML.dtd’: Unable to connect to the remote server —> System.Net.WebException: Unable to connect to the remote server —> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host 216.109.104.11:80 at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) at System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP) at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket […]

XmlDocument和慢模式处理

我有一个xml模板文档,我需要加载到XmlDocument中。 例如 myXMLDocument.Load(myXMLFile); 然而,这在dtd中加载时非常慢。 我已经尝试了”http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”和dtd的本地副本。 两者都或多或少地同时进行。 如果我通过将解析器设置为null(例如)来加载dtd,那么如果文档包含这些错误,则会出现诸如”Reference to undeclared entity ‘nbsp'”错误”Reference to undeclared entity ‘nbsp'” 。 我需要使用XmlDocument,因为我需要在输出文档之前操作DOM。 我怎样才能解决这些问题呢?

如何在C#中针对DTDvalidationXML文档?

我不想做任何花哨的事情,我只想确保文档有效,如果没有,则打印错误信息。 Google向我指出了这一点 ,但似乎XmlValidatingReader已经过时了(至少,这是MonoDevelop告诉我的)。 编辑:我正在尝试Mehrdad的提示,但我遇到了麻烦。 我想我已经掌握了大部分内容,但我无法在任何地方找到OnValidationEvent。 我从哪里获得OnValidationEvent? XmlReaderSettings settings = new XmlReaderSettings(); settings.ValidationType = ValidationType.DTD; settings.ValidationEventHandler += new ValidationEventHandler(/*trouble is here*/); XmlReader validatingReader = XmlReader.Create(fileToLoad, settings);

在C#中使用本地DTD文件validationXML文件的问题

我正在试图validationXML文件。 我正在使用此代码 XmlReaderSettings settings = new XmlReaderSettings(); settings.ProhibitDtd = false; settings.ValidationType = ValidationType.DTD; settings.ValidationEventHandler += new ValidationEventHandler(validationError); XmlSchemaSet schemas = new XmlSchemaSet(); settings.Schemas = schemas; XmlReader reader = XmlReader.Create(lblXmlPath.Text, settings); reader.Settings.Schemas.Add(null, lblDTDPath.Text); while (reader.Read()) { // empty by now } reader.Close(); 但在行“reader.Settings.Schemas.Add(null,lblDTDPath.Text);” Visual Studio向我显示错误“出于安全原因,此XML文档中禁止使用DTD。要启用DTD处理,请将XmlReaderSettings上的ProhibitDtd属性设置为false并将设置传递给XmlReader.Create方法” 正如您在代码中看到的那样,ProhibitDtd被设置为false(我也在调试期间validation过)。 我还尝试在调用XmlReader.Create()之前添加Schema,但没有成功。

阻止XmlReader扩展XML实体

有没有办法阻止.NET的XmlReader类在阅读内容时将XML实体扩展为它们的值? 例如,假设以下XML用作输入: á 让我们假设无法达到扩展aacute实体所需的外部OASIS DTD。 我希望读者按顺序阅读author元素,然后是EntityReference类型的aacute节点,最后是作者end元素,而不会抛出任何错误。 我怎样才能做到这一点? 更新:我还想阻止扩展字符实体,如á 。

如何使.NET XML解析器不在XML中扩展参数实体?

当我尝试解析下面的xml(使用下面的代码)时,我不断收到&question;&signature; 扩展到 Why couldn’t I publish my books directly in standard SGML? — William Shakespeare. 要么 由于我正在研究XML 3-way Merging算法,我想检索未扩展的&question;&signature; 我试过了: 正常解析xml(这导致扩展的sgml标记) 从xml开头删除Doctype会导致空的sgml标记) 各种XmlReader DTD设置 我有以下XML文件: <!DOCTYPE sgml [ ]> &question;&signature; 这是我尝试过的代码(多次尝试): using System.IO; using System.Xml; using System.Xml.Linq; using System.Reflection; class Program { static void Main(string[] args) { string xml = @”C:\src\Apps\Wit\MergingAlgorithmTest\MergingAlgorithmTest\Tests\XMLMerge-DocTypeExpansion\DocTypeExpansion.0.xml”; var xmlSettingsIgnore = new […]

.NET:如何在没有DOCTYPE声明的情况下使用DTDvalidationXML文件

我有一个没有DOCTYPE声明的XML文件,我想在读取时使用外部DTDvalidation。 Dim x_set As Xml.XmlReaderSettings = New Xml.XmlReaderSettings() x_set.XmlResolver = Nothing x_set.CheckCharacters = False x_set.ProhibitDtd = False x = XmlTextReader.Create(sChemin, x_set) 如何设置外部DTD的路径? 你如何validation?

忽略DOCTYPE .dtd,但.dtd文件必须仍然存在

我有一个处理HTTP请求的Web服务。 它接收的文档有一个嵌入的DOCTYPE,它指定.dtd文件。 我希望使用更新的XML架构validation文件,以便在较新的设备连接到我的服务时使用。 我可以成功忽略.dtd文件中的validation,但.dtd文件必须存在于我的本地硬盘驱动器上。 我想删除这些过时的文件,并没有找到办法。 我正在处理的示例XML文档: data 我用来打开文档的function: private void LoadXmlDoc(XmlTextReader myXmlTextReader) { XmlReaderSettings readerSettings = new XmlReaderSettings(); readerSettings.ValidationType = ValidationType.Schema; readerSettings.Schemas.Add(null, MyGoodSchemaFile); readerSettings.DtdProcessing = DtdProcessing.Ignore; readerSettings.XmlResolver = null; // Added as a test. readerSettings.ValidationEventHandler += ValidationEventHandle; XmlReader myXmlReader = XmlReader.Create(myXmlTextReader, readerSettings); XmlDocument myXmlDocument = new XmlDocument(); myXmlDocument.XmlResolver = null; // Added as a test. […]

使用XML时引用未声明的实体exception

我试图设置xmldoc的innerxml但得到exception:引用未声明的实体 XmlDocument xmldoc = new XmlDocument(); string text = “Hello, I am text α   – —” xmldoc.InnerXml = “” + text + “”; 这引发了exception: 引用未声明的实体’alpha’。 2号线,2号线.. 我该如何解决这个问题?