问题标签 [xmlreader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
7976 浏览

c# - XmlReader 和 MemoryStream,返回的 xml 未命中标签

有人可以向我解释这种行为吗?

如果您使用第一个字符串执行帖子底部的代码段,它将返回与用于输入的字符串完全相同的字符串;这就是我的预期。

输入1:

输出 1:

现在,如果您使用第二行 ( const string xml),它完全是相同的字符串,但在一行而不是两行上,它将返回以下内容

输入 2

输出 2

2 之间的唯一区别是第一个在 xml 声明之后有一个换行符,但正如您所看到的,第二个输出错过了 Parent 标签和第三个标签。任何想法?

这是我使用的代码:

0 投票
1 回答
2671 浏览

.net - 使用 ReadToDescendant 和/或 ReadElementContentAsObject 更正 XmlReader 问题

我正在研究通常非常好的开源项目Excel Data Reader中的一个神秘错误。它正在跳过从我的特定 OpenXML .xlsx 电子表格中读取的值。

问题出现在ReadSheetRow 方法中(下面的演示代码)。源 XML 由 Excel 保存并且不包含出现奇怪行为的空格。然而,已经用空格重新格式化的 XML(例如在 Visual Studio 中转到编辑、高级、格式化文档)工作得很好!

带空格的测试数据:

没有空格的测试数据:

演示问题的示例代码:

请注意,A之后输出_xmlReader.Read()B之后输出ReadToDescendantC之后输出ReadElementContentAsObject

带有空格的 XML 的测试结果:

没有空格的 XML 的测试结果:

模式更改表明XmlReader 移动到ReadElementContentAsObject的位置或可能的位置存在问题。ReadToDescendant

有谁知道这里可能会发生什么?

0 投票
1 回答
5669 浏览

whitespace - 如何从 XElement.ReadFrom(XmlReader) 创建的 XElement 对象中删除空格

我正在解析一个大的 xml 文件。所以我将 XmlReader 与 XElement 结合使用,而不是 XElement.Load()。

我已从 XmlReader 创建为 XElement 对象,如下所示和此处

我想将此 XElement 对象内容作为字符串保存在数据库中,不带空格。以下 3 种方式均无效。请注意,如果我使用 XElement.Load() 将 xml 加载到内存中,则 ToString(SaveOptions.DisableFormatting) 有效。

我用于 XmlReader 对象的 XmlReaderSettings 如下所示。我尝试了 IgnoreWhitespace =true/false 但没有运气,但我无法将其设置为 true,因为跳过了某些元素(关于跳过的原因,请参阅Why does XmlReader skip every other element if there is no whitespace separator?)。

如果我解析 XElement 对象,它会起作用,但这违背了使用 XmlReader 的全部目的,因为 XElement.Parse() 将 xml 加载到内存中。

如何删除空格?

编辑:这是我必须做的:

  1. 元素跳过是由于两次读取reader.Read(),并且XElement.ReadFrom(reader)在同一次迭代中,因此跳过了所有其他元素。修复上面链接中提到的循环可以解决这个问题。这个问题与XmlReaderSettings.
  2. xelement.ToString(SaveOptions.DisableFormatting)删除漂亮的格式。
0 投票
2 回答
1066 浏览

c# - 如何在这些 C# Xml 单元测试中进行第二次测试?在 XmlReaderSettings 的初始化中我错过了什么?

问题描述:

  • 我需要解决解决标准 HTML 实体的问题。
  • 我已经实现了 HtmlEntityReader - XmlReader 的实现,它有一个解析实体的代码
  • 我们系统的公共 API 提供了一个使用 XmlReader 的方法,因此用户可以传递使用 XmlReader.Create 方法之一创建的 XmlReader

我的 xml 单元测试的当前代码如下:

HtmlEntityReader 的部分代码如下:

我有一个例外:

在我通过自己的努力修复/调查/搜索此问题时,您能否提供快速建议或解决方案链接?

0 投票
1 回答
3805 浏览

c# - 为什么我的 XmlReader.GetAttribute() 不返回值?

我正在尝试在 C# 中解析我的 XML。

这是相关文件的一部分:

这是应该阅读它的代码:

我读到了一个常见的错误是忘记检查元素是否是开始元素。我添加了它,但 GetAttribute 仍然返回 null。任何想法?

0 投票
2 回答
7887 浏览

php - 使用 XMLReader、DOM、Xpath 获取给定节点的标签名称和值

我需要查询一个 xml 文档,然后显示特定的标记值,例如名字、姓氏、组(部门)、工作职位。

我正在使用 XMLReader,因为我可能需要处理大型 XML 文件。我使用 DomXPath 过滤数据,但我不知道如何检索每个元素的节点名称和值。下面的代码只返回“成员”作为节点名称?

任何帮助,将不胜感激。

0 投票
2 回答
1673 浏览

c# - 为什么 XmlReader 将命名空间 uris 附加到每个元素?

我有一个包含以下格式的 xml 的流,我想将其反序列化为 C# 对象

我已经用字符串完成了很多次,但是对于流,它会将命名空间属性附加到所有复杂元素。如果我只是删除 xmlns 属性,而忘记根据模式验证它,它只会附加一个空的 xmlns 属性。我遇到的问题是 XmlSerializer (?)中的 Deserialize 方法抛出一个错误,说它不需要该属性。我尝试使用 XmlRoot 和 XmlType 属性来装饰类,但这并没有改变任何东西。

这是我要反序列化的类

这是用于完成工作的方法

我已经使用 DataContractSerializer 尝试过这个,但这带来了它自己的学习机会,所以如果有人可以帮助我应该在属性中添加什么来让 XmlSerializer 工作,那就太好了。

任何帮助将不胜感激,谢谢。

0 投票
1 回答
417 浏览

c# - 我应该输出缓存查找 twitter RSS onload 的控件吗?

我有一个用户控件,它出现在一个热门网站的几个页面上。其中一些页面包括我们的博客侧边栏、我们的论坛侧边栏,以及位于我们主页中间的 smack。这意味着这个控件被渲染了很多。该控件用于读取特定帐户的 twitter RSS 提要并写出最后 2 条推文。下面是我的大部分 Page_Load 控件。我有它是try {} catch因为在生产中该站点似乎无法经常加载 XML,所以我需要打开一条友好的错误消息。

如您所见,我只获取 2 个最近的项目并在前端的转发器中重复它们。如果有任何失败,我会打开错误 PlaceHolder,上面写着“Twitter 不可用”。

我经常在 prod 站点上看到此错误消息,所以我想知道它是否对 RSS 提要发出了太多请求。我正在考虑将控件输出缓存 10 分钟,但我想,“如果它在错误状态下被缓存怎么办”?然后保证显示错误消息面板 10 分钟。我的问题是,如果它在创建新缓存的版本时显示来自 catch 的错误,是否真的会缓存 10 分钟(假设我设置了Duration="600")?当只呈现真实的 Twitter 数据而不是错误消息时,有没有人有任何关于如何使这项工作更好或缓存的提示?

提前致谢

0 投票
7 回答
350263 浏览

c# - 在 C# 中使用 XmlReader 读取 Xml

我正在尝试尽可能快地阅读以下 Xml 文档,并让其他类管理每个子块的阅读。

但是,我正在尝试使用 XmlReader 对象来读取每个帐户以及随后的“StatementsAvailable”。您是否建议使用 XmlReader.Read 并检查每个元素并进行处理?

我考虑过分开我的类来正确处理每个节点。因此,有一个 AccountBase 类,它接受一个 XmlReader 实例,该实例读取 NameOfKin 和有关帐户的其他几个属性。然后我想通过 Statements 进行交互,让另一个类填写关于 Statement 的内容(然后将其添加到 IList 中)。

到目前为止,我已经通过执行 XmlReader.ReadElementString() 完成了“每类”部分,但我无法锻炼如何告诉指针移动到 StatementsAvailable 元素并让我遍历它们并让另一个类读取这些属性中的每一个.

听起来很容易!

0 投票
4 回答
917 浏览

c# - XML/C#:仅当属性正确时才读取内容

我有一个如下的 XML 文件,并且我正在尝试读取 Name 标记的内容,前提是 Record 标记的属性是我想要的。(继续下面的代码)

XML 文件是:

这是我到目前为止的 C# 代码:

因此,例如,如果2传递给函数,我希望它返回字符串"Jane Doe"。我是 XML 解析的新手,因此将不胜感激。

谢谢。