问题标签 [xmltextreader]

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 回答
1211 浏览

vb.net - xml 解析错误处理或如何将 XMLTextReader 的光标重新启动?

我有一个函数api_request,它将 API 方法作为参数,并返回XMLTextReader

我从不同的地方调用这个函数来向站点 API 发出请求,并且根据方法结果的解析非常不同。

所以在每种方法中我都有这样的东西:

如您所见,我有代码ElseIf s.Name = "error" Then error_handler(s, "user.get")。这是因为发生错误时,服务器总是返回如下内容:

这在 Sub 中进行解析error_handler,并根据错误选择以下操作。

此代码有效,但我必须检查是否 ElseIf s.Name = "error" 每次都遇到这样的错误,尽管所有方法都调用该api_request函数。是否可以在返回 Reader 之前检查 api_request 函数中的错误?问题是如果我在那里开始读取 xml,并且没有错误,我无论如何都无法将 Reader 定位到开头。

0 投票
1 回答
914 浏览

c# - 返回 XmlTextReader 对象,我可以调用 .Close()

我现在陷入困境,试图找到问题的根源。我们缺乏异常处理,所以我有点猜测错误来自哪里。这是我的问题,如果一个方法返回一个 XmlTextReader 对象,如果该对象被包装在 try/catch/finally 中,而 finally 块执行 .Close() 方法,该对象是否会变为 null?

如果是,我该如何正确处理这些资源,我知道没有 .Clone() 或 .Copy() 方法,还有其他方法可以实现吗?我是否应该关心处理 XmlTextReader 和 XmlReader 对象?

谢谢

0 投票
3 回答
2173 浏览

c# - XMLTextReader C#

我有一个xml文件,上面有一些数据。我想获取所有数据

进入一个字符串变量。

对我有一些限制,那就是我应该只使用 XMLTextReader 这个我怎么能只使用 XmlTextReader 而不使用 xdocument

0 投票
1 回答
227 浏览

xmltextreader - 使用 XmlTextReader 通过属性值 C# 从 xml 获取数据

我有一个包含以下内容的文件(myfile.xml)。我必须将所有内容(包括产品节点)都放在带有id=1.

即结果应该是:

我怎样才能做到这一点?

我有我应该使用XmlTextReaderXPathNavigator仅用于此的限制,否则我可以使用这个:Getting data from xml by attribute vlaue

0 投票
3 回答
343 浏览

c# - 如何获取具有特定属性的节点的所有子节点?

我有一个这样的 xml 文档:

我想要做的是<Category>检查每个属性是否是我需要的,例如“Bebidas”,所以我感兴趣的部分是:

现在我有了这个,我想做一些类似于我已经做过的事情:

首先我想打印出所有:

而且我只想打印出 food 具有属性的那些cocina="si",所以:

所以我有各种各样的问题:

首先要使用哪种方法,我对大量可能的方法和实现感到困惑:XmlDocument、XmlReader、XmlTextReader 等。

这个问题中,我收集到 XmlDocument 更容易使用,那就太好了,越简单越好,因为我对解析 Xml 文件很陌生,正如你所欣赏的那样。

现在到了实际的实现,我尝试了各种各样的事情,但没有多少成功,我似乎可以做一些部分,但不能一起做。

这将输出:

这是有道理的,但现在,我如何检查类别是否具有属性name="cocina"

我猜这样的事情可能会有所帮助:

MoveToAttribute()但我在 XmlTextReader 中找不到类似的东西。

再说一遍,我如何检查是否有属性cocina="si"

0 投票
1 回答
2442 浏览

c# - 如何使用 XMLTextWriter 在指定位置写入 XML 节点

我有一个如下所示的 xml 文件。

我想在“内容”之后写一个新节点,我知道如何使用 XMLDocument 来做到这一点,有没有办法使用 XMLTextWriter 来做到这一点?

0 投票
2 回答
670 浏览

c# - 使用 XmlTextReader 将某些元素内的某些值从外部 .xml 文件打印到命令行时遇到困难

我正在尝试存储和打印<name></name>至少第一个<item></item>元素的标签之间的值,但我无法“找到”或“获取”的值<name></name>

请更清楚地解释您的情况......

我计划获取提取的name值并将其转换(全部小写并为单词之间的空格添加下划线),以便我可以使用它在“images”文件夹中搜索图像文件名。

如果找到匹配项 - 获取图像文件的文件路径,将其存储在变量中,然后<image></image>在当前<item></item>元素中创建并粘贴标签之间的文件路径。对另外 999 个项目重复此操作。如果某些项目name与任何图像文件名不匹配 - 然后创建一个日志文本文件并存储未匹配的项目的名称。

XML结构

代码

0 投票
1 回答
475 浏览

asp.net - 遍历 xmltextreader

我有以下格式的 xml。

现在我想迭代这个 xml 并获取报告节点,然后从那里得到子节点,如 title/pdflink/size 等,这将是直通的。使用 for 循环进行循环。我想使用 xmltextreader 来完成这个。我尝试使用while,但迭代后我只得到1个循环。我不知道为什么。如果通过 for 循环我如何迭代,for(loop when reader.element("reports)){} 然后获取其余节点并将它们放入数组或列表中。一旦我将它们存储在列表中我想在提要中对它们进行 dipaly。这是最好的方法吗?请帮忙。

0 投票
3 回答
330 浏览

c# - C# XMLReader Strange 17th position 关闭 XMLReader bug

我有一个包含一堆东西的 ListView。第 17 个位置的任何内容总是中断(ObjectDisposedException“无法从关闭的 TextReader 中读取”)。1 到 16 以及 18 到 24 工作正常。如果我将 x 从第 17 位移到第 16 位,它会再次起作用,但新的第 17 位会中断。我的代码没有具体提到任何地方。

XML 文件遵循以下格式

代码很简单。我有一种方法可以找到我感兴趣的配置文件并将其作为子树返回

然后我有一个从子树中提取列表 1 和 2 的方法。

这就是问题发生的地方。ObjectDisposedException 无法从关闭的 TextReader 中读取。当我到达 subtree.ReadToFollowing("ListTwo") 时它总是会中断,但前提是我选择了 XML 列表中的第 17 个配置文件。我看不出我是如何关闭文本阅读器的。此外,这适用于配置文件 18、19、20 等以及 1 到 16,但不知何故总是在位置 17 处中断,无论那里有什么。我看不出第 17 个位置与其他位置有何不同。

请帮忙!

0 投票
3 回答
4847 浏览

c# - 我需要使用 XmlTextReader 将大型 XML 文件拆分为多个输出 xml

我需要获取一个 XML 文件并从输入文件的数千个重复节点创建多个输出 xml 文件。源文件“AnimalBatch.xml”如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<Animals>
<Animal id="1001">
<Quantity>One</Quantity>
<Adjective>Red</Adjective>
<Name>Rooster</Name>
</Animal>
<Animal id="1002">
<Quantity>Two</Quantity>
<Adjective>Stubborn</Adjective>
<Name>Donkeys</Name>
</Animal>
<Animal id="1003">
<Quantity>Three</Quantity>
<Color>Blind</Color>
<Name>Mice</Name>
</Animal>
</Animals>

但实际上,其中没有 CR/LF 字符。实际的文本流如下所示:

<?xml version="1.0" encoding="utf-8" ?><Animals><Animal id="1001"><Quantity>One</Quantity><Adjective>Red</Adjective><Name>Rooster</Name></Animal><Animal id="1002"><Quantity>Two</Quantity><Adjective>Stubborn</Adjective><Name>Donkeys</Name></Animal><Animal id="1003"><Quantity>Three</Quantity><Color>Blind</Color><Name>Mice</Name></Animal></Animals>

程序需要对重复的“Animal”进行拆分,生成3个文件,分别命名为:Animal_1001.xml、Animal_1002.xml、Animal_1003.xml

我使用 XmlDocument 对此有一个先前的问题,该问题已经得到解答。
请参阅:[使用 XmlDocument 将 XML 文件拆分为多个 xml][1]

这个问题是关于如何使用 XmlReader 来获取元素并从中创建 XmlDocument 元素。


Animal_1001.xml:
<?xml version="1.0" encoding="utf-8"?>
<Animal>
<Quantity>One</Quantity>
<Adjective>Red</Adjective>
<Name>Rooster</Name>
</Animal>


Animal_1002.xml
<?xml version="1.0" encoding="utf-8"?>
<Animal>
<Quantity>Two</Quantity>
<Adjective>Stubborn</Adjective>
<Name>Donkeys</Name>
</Animal>


Animal_1003.xml>
<?xml version="1.0" encoding="utf-8"?>
<Animal>
<Quantity>Three</Quantity>
<Adjective>Blind</Adjective>
<Name>Mice</Name>
</Animal>

这是有效的代码 - 但仅当输入文件中有换行符时:

当此程序在每个元素后都有回车符的“AnimalBatch.xml”副本上运行时 - 它可以工作,并根据需要创建 Animal_xxxx.xml 文件。当 AnimalBatch.xml 看起来像未格式化的文本流时 - 它获取第一个 Animal - 并且可以获得它的 ID 1001 并写入输出文件 ok。它能够读取后续的 Animal 元素,但不能获得“id”属性——并最终写入名为“Animal_.xml”的输出文件——因为它试图从属性中读取的 strSeq 变量显然是 null 或空白。最后,第二个文件只包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<Animal />

这使我相信 XmlReader,至少在 doc.Read() 方法的范围内,(doc.Name=="Animal") 语句或以后的“strSeq = doc.GetAttribute("id");” - 如果<Animal id="1002"> 标签后有 CR/LF,则工作方式不同。

我想我真正的问题是 - 什么时候 doc.GetAttribute("id"); 文档中的光标在哪里?为什么它不能得到“1001”之后的那些 - 这确实有效?

John 说 XML 不关心格式——我也一直这么认为——但这令人困惑。另外 - 对于我的应用程序,我可以获得 XML 的唯一方法是未格式化,因为我通过 SSIS 退出 SQL,它是文本流,而不是 XML 对象。