XMLReader跳过当前元素[英] XMLReader skip current element

问题描述

例如,我有一部分 XML 文件.

<应用设置>
<对象类版本="1.0.0.0";类型="AppSettings">
<字段>
<字段名称="App_ID"类型="System.Int32">
<价值>
<int>-1</int>
</价值>
</字段>
<字段名称="AppDate类型="System.DateTime">
<价值>
<dateTime>2007-05-25T00:00:00</dateTime>
</价值>
</字段>
<字段名称="AppFileName"类型="System.String">
<价值>
<字符串>TEST 03222007.daf</字符串>
</价值>
</字段>
<字段名称="AppVersion";类型="System.String">
<价值>
<字符串>1.0.3.3</字符串>
</价值>
</字段>
<字段名称="_ClassVersion"类型="System.String">
<价值>
<字符串>1.0.0.0</字符串>
</价值>
</字段>
</字段>
</对象>
</AppSettings>

如您所见,它已损坏,因为 AppDate 没有给出第二个".
当 reader.MoveToContent(在我阅读 App_ID 之后)时,我遇到异常
这一切都在 try..catch 部分...
之后我收到类似字符串字段名 == "AppDate
类型=";
我不明白,我怎样才能跳转到 AppFileName 并跳过损坏的
应用日期?
那么,如何在 catch 部分跳转到下一个元素?(期间
应用程序的工作,我不知道下一个元素的名称是什么)

谢谢

推荐答案

6 月 5 日下午 4:29,Alex <a...@douweb.org 写道:

<snip>
如您所见,它已损坏,因为 AppDate 没有给出第二个".
对.这是一个无效的 XML 文件.我强烈推荐你
完全拒绝此类文件 - 尝试处理损坏的文件,例如
这是一个真正的痛苦,我不知道是否 XmlReader(或任何
其他 .NET XML 类型)支持它.

乔恩


<snip>
>
如您所见,它已损坏,因为 AppDate 没有给出第二个".

对.这是一个无效的 XML 文件.我强烈推荐你
完全拒绝此类文件 - 尝试处理损坏的文件,例如
这是一个真正的痛苦,我不知道是否 XmlReader(或任何
其他 .NET XML 类型)支持它.

乔恩
当然,我手动使文件无效,因为我想添加一些
改进我的代码,以避免或解决这个问题.

这只是片段,现在文件大小为 100KB,并且会更大
稍后.
此外,这个文件就像我想成为的某些类的 XmlSerialization
序列化.
所以,存储的数据很大,我真的不希望用户
全部重新填写.

所以,如果有一些解决方案,我会很高兴在这里.

Alex 写道:
例如,我有一部分 XML 文件.

<应用设置>
<对象类版本="1.0.0.0";类型="AppSettings">
<字段>
<字段名称="App_ID"类型="System.Int32">
<价值>
<int>-1</int>
</价值>
</字段>
<字段名称="AppDate Type="System.DateTime">
如您所见,它已损坏,因为 AppDate 没有给出第二个".
当 reader.MoveToContent(在我阅读 App_ID 之后)时,我遇到异常
这一切都在 try..catch 部分...
之后我收到类似字符串字段名 == "AppDate
类型=";
我不明白,我怎样才能跳转到 AppFileName 并跳过损坏的
应用日期?
那么,如何在 catch 部分跳转到下一个元素?(期间
应用程序的工作,我不知道下一个元素的名称是什么)
XML有严格的规则,示例标记格式不正确,因此
XML 解析器不会解析它,但会抛出异常.没办法
简单地跳过格式不正确的标记.所以你不能
使用 XmlReader 成功解析该标记.你必须修复
任何应用程序生成标记以生成格式良好的 XML.
在 .NET 中使用 XmlWriter 会有所帮助.
--

Martin Honnen --- MVP XML
http://JavaScript.FAQTs.com/

本文地址:https://www.itbaoku.cn/post/1050534.html