在 C# 中将包含多个 XML 文件的单个大文件读取到多个 xml 记录中

2023-12-06

我有一个文件,它实际上包含多个相同格式的 XML 文件,因此该文件本身不是有效的 XML;例如:

<?xml version='1.0' encoding='UTF-8'?>
<Proposal xmlns="a namespace">
    <ASubnode>Text</ASubNode>
    <LotsOfOtherNodes />
</Proposal>
<?xml version='1.0' encoding='UTF-8'?>
<Proposal xmlns="a namespace">
    <ASubnode>Text</ASubNode>
    <LotsOfOtherNodes />
</Proposal>
....

我想一次处理一个提案节点;例如:

foreach (var proposal in file)
    do something

我无法使用 XmlReader,因为它在到达中间 XML 声明节点时引发异常。我可以将整个文件读入字符串,然后使用 Split 方法,但这些文件的大小为千兆字节,因此作为一种选择并不是特别有吸引力。我似乎可以一次读取一行文件,通过正则表达式搜索适当的节点,但文件不是像上面那样每行一个节点的行格式,而是包含多个节点的很长的行,以及节点文本中的随机换行符。

有没有一种方法可以在不手工制作文本解析器的情况下实现这一目标?


您有两个选择:

  1. 告诉 XmlReader 不要那么挑剔。设置XmlReaderSettings.ConformanceLevel到ConformanceLevel.Fragment。这将使解析器忽略不存在根节点的事实。

    var settings = new XmlReaderSettings();
    settings.ConformanceLevel = ConformanceLevel.Fragment;
    using (var reader = XmlReader.Create(textReader, settings))
    {
         ...
    }
    
  2. 用“根”元素包裹您的 XML 文件,这样您的文档将只有一个根节点

 <?xml version='1.0' encoding='UTF-8'?>
 <root>
     <Proposal xmlns="a namespace">
         <ASubnode>Text</ASubNode>
         <LotsOfOtherNodes />
     </Proposal>
     <?xml version='1.0' encoding='UTF-8'?>
     <Proposal xmlns="a namespace">
         <ASubnode>Text</ASubNode>
         <LotsOfOtherNodes />
     </Proposal>
 ....
 </root>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中将包含多个 XML 文件的单个大文件读取到多个 xml 记录中 的相关文章

  • 分层架构中的异常处理

    我们正在分层设计中重构 当然还有重新设计 我们的服务 我们有服务操作层 BLL 网络抽象层 gt 处理网络代理 数据抽象层 但我们对我们的异常处理策略有点困惑 我们不想向外界透露太多 BLL 的信息 从其他层到bll就可以了 我们不想让 t
  • 双线性序列给出奇数结果

    我试图让我的表现技能 不存在 达到标准 但在将公式写入代码时遇到了问题 这是我试图将其引用为 转换 为代码的公式 考虑一个序列 u 其中 u 定义如下 号码u 0 1是第一个u 对于每个x in u then y 2 x 1 and z 3
  • C++ 返回值、引用、const 引用

    你能向我解释一下返回值 值引用和值常量引用之间的区别吗 Value Vector2D operator const Vector2D vector this gt x vector x this gt y vector y return t
  • 如何使用 ILoggerFactory 记录 Polly 的重试

    或者 如何从静态方法记录 From https github com App vNext Polly https github com App vNext Polly你有这样的例子 其中记录器神奇地可用 Policy Timeout 30
  • WP8.1 C# 绑定联系人图像

    信息很简单 我正在尝试创建一个可以显示用户联系人的应用程序 我也是一名自学成才的程序员 所以我在某些方面有编程经验 但总体来说我对数据绑定相对较新 首先 我有一个 ListView 控件 其中包含图像绑定
  • 代码块 power 函数在 c 中不起作用

    我正在使用代码块来学习c 我的代码是 include
  • 操作/Lambda 表达式内存管理问题

    我将一个操作存储在局部变量中 然后在该局部变量超出范围后使用 使用前是否有被清理的危险 这是一个例子 public List GetMaps Action
  • Confuser .NET 混淆器。安全吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我目前正在开发一个应用程序 其中阻止用户反编译代码非常重要 现在 我意识到 如果由经验丰富的程序员执行 大多数 exe 都是可反编译的
  • 是否有一种算法可以在线性时间内计算数组反转?

    我知道有多少倒转 en wikipedia org wiki Inversion 28discrete mathematics 29 in an n 元素数组可以在 O n log n 操作使用增强型归并排序 http www geeksf
  • 捕获另一个进程未处理的异常

    我想知道我是否可以捕获我开始使用 Process Start 的另一个进程抛出的未处理的异常 我知道我可以用这个捕获标准错误link http social msdn microsoft com Forums en US csharpgen
  • 带双重检查锁的单例设计模式

    假设您有以下代码 1 为什么我们使用双重检查锁 为什么单锁不够好 请提供详细的例子 2 这种实施方式的主要缺点是什么 我该如何证明呢 Thanks public sealed class SomeSingleton5 private sta
  • ASP.NET MVC 中 ModelState.AddModelError 中的关键参数有什么意义?

    我在我的控制器中添加了验证检查来修改ModelState如果验证失败 例如 private bool ValidateMoney string raw string name decimal min decimal max try var
  • TreeView:仅在子节点中存在复选框

    我需要一个树视图控件 根节点没有复选框 只有图像 所有子节点都有一个复选框 图像 C net 2 0 winforms 不是 wpf WinForms树视图默认不支持混合复选框 非复选框节点 您可以在树视图上全局启用复选框 并使用以下命令在
  • EWS - 给予预约,获取预约的所有者副本

    在 EWS 中进行预约后 是否可以获得所有者的副本 例如 如果我登录为user1 我有user1创建的约会的副本user2 我有冒充权 我要编辑user2预约的副本 我怎样才能获得user2 s copy 您可以使用 PidLidClean
  • 为什么我不能对普通变量进行多态?

    我是一名Java程序员 最近开始学习C 我对某事感到困惑 据我了解 在 C 中 要实现多态行为 您必须使用指针或引用 例如 考虑一个类Shape与实施的方法getArea 它有几个子类 每个子类都以不同的方式重写 getArea 然后考虑以
  • 修改代码以从 Windows 中的 PE 可执行文件检索双重签名信息?

    我已经挣扎了一段时间想要修改这段代码示例 https support microsoft com en us help 323809 how to get information from authenticode signed execu
  • 为什么调试器只显示数组指针中的一个元素?

    首先 我知道new是执行此操作的 C 方法 我只是表明有不止一种方法可以重现此错误 而且两种方法都令人难以置信的令人沮丧 我有两种形式的源文件 我正在尝试调试另一个编程作业 但我并没有寻求帮助 基本上 我正在尝试重新实施set作为一个类 具
  • OpenGL 计算着色器调用

    我有一个与新计算着色器相关的问题 我目前正在研究粒子系统 我将所有粒子存储在着色器存储缓冲区中 以便在计算着色器中访问它们 然后我派遣一个一维工作组 define WORK GROUP SIZE 128 shaderManager gt u
  • 清理堆分配对象的良好实践或约定?

    我正在学习C 我有 C C ObjC 背景 相当高级的语言 在 C 或 ObjC 上 作为函数或方法的结果返回堆分配的对象是很简单的 因为对象的清理是受管理的 按照惯例 会在适当的时候销毁 但我不知道在 C 中应该如何处理这个问题 例如 s
  • 如何从尖点库矩阵格式获取原始指针

    我需要从尖点库矩阵格式获取原始指针 例如 cusp coo matrix

随机推荐

  • 将 cmd 构建到 Tkinter 窗口中

    您好 我想知道启动程序时是否可以将命令提示符框弹出到 Tkinter 窗口中 就像是 from Tkinter import admin Tk cmd Cmd admin cmd pack admin mainloop 我在窗户上 http
  • Gitflow:将版本错误修复合并回 master 进行开发

    我的问题是围绕 gitflow 流程中的一个非常具体的点 如文档所述here 我已经合并了错误修复release 1 2 into master 并进行适当标记 除了历史看起来如何之外 反向合并与release 1 2与从后合并master
  • 我如何从views.py编辑/更改模型字段的值

    今天是个好日子 我想知道如何通过定义的会话列表中的项目数更改模型字段的值 我已经制作了一个配置文件模型 这是用户模型的 OneToOne Field 在我的 models py 中有一个 级别 字段 如下所示 在 view py 中 我创建
  • P文本添加到html文本中

    我知道这方面有很多主题 而且我已经查看了所有主题 但其中没有一个解决方案适用于我 我在页面编辑器的 文本 一侧放置了一个短代码来运行响应式滑块的 jscript 然而 当我加载页面时 源代码在每一行 JavaScript 后面都有大量的段落
  • 我应该在 Flutter 插件的 Swift 本机代码中传递哪个视图控制器?

    我试图在我的 Flutter 插件中显示来自 Swift 本机代码的 Adcolony 广告 这就是我的 swift 代码的样子 if let interstitial self interstitial interstitial expi
  • MacOS:以编程方式查找串行端口?

    MacOS 中是否有库调用来列出可用的串行端口及其设置 希望有一天能以最小的难度移植到 iOS 上 我宁愿不system ls dev tty and system stty 如果可能的话 您可以使用 IOKit 调用来查找串行端口 See
  • NSTimer Category + Blocks 实现替换选择器

    我对块和 Objective C 很陌生 我正在尝试使用两者来编写我的第一个类别 我的想法是在 NSTimer 上创建一个类别 它将接收一个块作为参数 并且该块将在选择器调用中使用 现在我有这个 NSTimer Additions h im
  • 可靠的数据服务

    如何确保我的文件服务可靠且可扩展 它可以处理多少个并行请求 我正在思考超越硬件能力和带宽的问题 我正在关注在 java servlet 中流式传输大文件 如果这些是静态文件 只需链接到它directly 所有像样的 servlet 容器 应
  • 错误:Tensorflow CNN 维度

    你好 我是 Tensorflow 新手 尝试使用 CNN 运行 cifar10 数据集 我的网络由三层构成 例如 卷积 最大池化 全连接层 Softmax层 下面是我的模型的张量流代码 15 def model X w w2 w o p k
  • 如何在vue2.7中删除slot-scope

    我将 vue 应用程序升级到 vue2 7 并且我想从我的应用程序中删除 slot scope 因为它在 vue3 中已被删除 所以在示例中 我看到 vue2 是这样的
  • TSQL 返回结果是否比 SQL Server 中的存储过程更快

    我有一个以前运行良好的存储过程 需要 4 到 5 秒才能得到结果 过去两个月我没有使用这个存储过程 当我现在调用相同的过程时 需要 5 分钟以上才能产生结果 过去两个月没有记录填充到我的源表中 我转换了存储过程并作为 TSQL 块执行 它恢
  • 为什么 C++ 犰狳中的一些特征向量符号与 Python 和 R 不同

    我想知道为什么 Armadillo 的特征向量中元素的符号与 Python 即 numpy 和 R 等其他语言相反 例如 C using namespace arma vec eigval mat eigvec C 11 initializ
  • 合并配置单元中的两列并在运算符之间使用

    我在配置单元中有一个带有列的登录详细信息表 日期 时间 用户 我正在尝试编写一个查询 它可以选择在两个日期之间登录的用户 同时也考虑到时间 例如 我想知道在这段时间里登录过的用户10 12 2012 02 30 00 and 28 12 2
  • 如何将包含 HTML 实体和无效字符的文本转换为其 UTF-8 等效项?

    我正在更改标题 因为我不知道特殊的破损窗口字符给我带来了问题 使问题看起来像重复的 如何转换 HTML 实体 0 9 类型的字符引用和 a fA F0 9 无效的字符引用 和无效的 Windows 字符 chr 151 到其 UTF 8 等
  • PHP磁盘总空间

    我需要有关 disk total space 函数的帮助 我的代码中有这个 Name Email Diskspace Available
  • 检测草地图像中的植物

    我是计算机视觉领域的新手 我想检测草地图像中的某种植物 Original Image Canny Edge Detection Algorithmus Hough Line Transform After Edge Detection 我已
  • 如何在Web服务器上获取用户的IP地址?

    我在将用户的 IP 地址获取到 Web 服务器时遇到问题 我正在使用这段代码 To get the local IP address string sHostName Dns GetHostName IPHostEntry ipE Dns
  • JavaScript 中的串联继承与类继承

    当我一开始看到连接继承时 它对我来说就像一个组合 但人们一直将其命名为继承 然而 类使用原型来创建将对象连接在一起的原型链 现在的问题是 如果串联继承和类继承都做同样的事情 该使用哪一个 这是两种情况的示例串联继承 function Per
  • Reactjs 中的 HTML 表格行跨度

    当我使用地图并想要制作这样的表格时我很困惑 有数据 const arr no 1 name david fruit apple type typeName red apple typeName green apple no 2 name d
  • 在 C# 中将包含多个 XML 文件的单个大文件读取到多个 xml 记录中

    我有一个文件 它实际上包含多个相同格式的 XML 文件 因此该文件本身不是有效的 XML 例如