草庐IT

XMLReader

全部标签

c# - 如果没有空格分隔符,为什么 XmlReader 会跳过所有其他元素?

当我尝试使用LINQXmlReader类解析XML时,我看到了奇怪的行为。下面的测试用例:看起来我是否使用了(XElement)XNode.ReadFrom(xmlReader)或Read()之一XmlReader上的方法,它错过了第二个bar输入XML中的元素。如果在之间添加了任何空格和然后它将解析第二个bar元素正确。有没有人知道输入流为什么会困惑以及如何解决这个问题?[Test][Explicit]publicvoidShouldParseCorrectNumberOfElements(){varxml=@"wtfwtf2";XmlReaderxmlReader=XmlReade

c# - XmlReader - 自关闭元素不会触发 EndElement 事件?

我在.NET中使用XmlReader通过循环解析XML文件:while(xml.Read()){switchxml.NodeType{caseXmlNodeType.Element://DosomethingcaseXmlNodeType.Text://DosomethingcaseXmlNodeType.EndElement://Dosomething}}我想知道下面的XML代码不产生一些EndElement节点是否正常?请注意/>之前缺少的空格,但我认为这不是问题所在。是否有不同的NodeType或属性来指示自闭合元素? 最佳答案

c# - XmlReader - 自关闭元素不会触发 EndElement 事件?

我在.NET中使用XmlReader通过循环解析XML文件:while(xml.Read()){switchxml.NodeType{caseXmlNodeType.Element://DosomethingcaseXmlNodeType.Text://DosomethingcaseXmlNodeType.EndElement://Dosomething}}我想知道下面的XML代码不产生一些EndElement节点是否正常?请注意/>之前缺少的空格,但我认为这不是问题所在。是否有不同的NodeType或属性来指示自闭合元素? 最佳答案

c# - xml 文档异常中禁止 DTD

尝试解析C#应用程序中的XML文档时出现此错误:"ForsecurityreasonsDTDisprohibitedinthisXMLdocument.ToenableDTDprocessingsettheProhibitDtdpropertyonXmlReaderSettingstofalseandpassthesettingsintoXmlReader.Createmethod."作为引用,异常发生在以下代码的第二行:using(XmlReaderreader=XmlReader.Create(uri)){reader.MoveToContent();//herewhile(rea

c# - xml 文档异常中禁止 DTD

尝试解析C#应用程序中的XML文档时出现此错误:"ForsecurityreasonsDTDisprohibitedinthisXMLdocument.ToenableDTDprocessingsettheProhibitDtdpropertyonXmlReaderSettingstofalseandpassthesettingsintoXmlReader.Createmethod."作为引用,异常发生在以下代码的第二行:using(XmlReaderreader=XmlReader.Create(uri)){reader.MoveToContent();//herewhile(rea

c# - 在 C# 代码中解析(大)XML 的最佳方法是什么?

我正在用C#编写GIS客户端工具,以从服务器检索基于GML的XML模式(下面的示例)中的“要素”。提取物限制为100,000个特征。我估计最大的extract.xml可能会达到150MB左右,所以显然DOM解析器已经用完了,我一直试图在XmlSerializer之间做出决定。和XSD.EXE生成的绑定(bind)--OR--XmlReader和手工制作的对象图。或者也许还有我还没有考虑过的更好的方法?像XLINQ,或者????请问有人可以指导我吗?特别是关于任何给定方法的内存效率。如果不是,我将不得不对这两个解决方案进行“原型(prototype)设计”并并排分析它们。我有点像.NET

c# - 在 C# 代码中解析(大)XML 的最佳方法是什么?

我正在用C#编写GIS客户端工具,以从服务器检索基于GML的XML模式(下面的示例)中的“要素”。提取物限制为100,000个特征。我估计最大的extract.xml可能会达到150MB左右,所以显然DOM解析器已经用完了,我一直试图在XmlSerializer之间做出决定。和XSD.EXE生成的绑定(bind)--OR--XmlReader和手工制作的对象图。或者也许还有我还没有考虑过的更好的方法?像XLINQ,或者????请问有人可以指导我吗?特别是关于任何给定方法的内存效率。如果不是,我将不得不对这两个解决方案进行“原型(prototype)设计”并并排分析它们。我有点像.NET

c# - 决定何时使用 XmlDocument 与 XmlReader

我正在优化自定义对象->XML序列化实用程序,这一切都已完成并正常工作,这不是问题所在。它的工作原理是将文件加载到XmlDocument对象中,然后递归遍历所有子节点。我想也许使用XmlReader而不是XmlDocument加载/解析整个东西会更快,所以我也实现了那个版本。算法完全相同,我使用包装类来抽象处理XmlNode与XmlReader的功能。例如,GetChildren方法yield返回子XmlNode或SubTreeXmlReader。所以我编写了一个测试驱动程序来测试这两个版本,并使用了一个重要的数据集(一个900kb的XML文件,包含大约1,350个元素)。但是,使用J

c# - 决定何时使用 XmlDocument 与 XmlReader

我正在优化自定义对象->XML序列化实用程序,这一切都已完成并正常工作,这不是问题所在。它的工作原理是将文件加载到XmlDocument对象中,然后递归遍历所有子节点。我想也许使用XmlReader而不是XmlDocument加载/解析整个东西会更快,所以我也实现了那个版本。算法完全相同,我使用包装类来抽象处理XmlNode与XmlReader的功能。例如,GetChildren方法yield返回子XmlNode或SubTreeXmlReader。所以我编写了一个测试驱动程序来测试这两个版本,并使用了一个重要的数据集(一个900kb的XML文件,包含大约1,350个元素)。但是,使用J

c# - 如何从 xmlReader 的当前节点创建 xmlElement?

如果我有一个xmlreader实例,我如何使用它来读取其当前节点并以xmlElement实例结束? 最佳答案 未测试,但通过XmlDocument怎么样:XmlDocumentdoc=newXmlDocument();doc.Load(reader);XmlElementel=doc.DocumentElement;或者(从现在开始),像这样:doc.LoadXml(reader.ReadOuterXml());但实际上我不喜欢它……它无缘无故地强制执行额外的xml解析步骤(CPU消耗更高的操作之一)。如果原件有问题,那么也许可以考