【发布时间】:2014-10-06 18:28:42
【问题描述】:
我有来自第三方程序的 XML 文件,其中包含 Base64 字符串(2,000,000 个字符)
我想将特定节点的内部文本保存到一个文本文件(大约 70,000 个字符),问题是由于文件中的最后一行,我无法将此文件作为 XML 文件处理。正如我现在将向您展示的那样
<?xml version="1.0" encoding="utf-16"?>
<cProgramECUPackageOut xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
ID="b0eb0c7e-a3de-4bc7-9e63-7a082f8a2bc5"
Version="16.01" xmlns="cProgramECUPackageOut">
<text1>N </text1>
<No>487382</No>
<text2>128</text2>
<Data1>21110107</Data1>
<Data2>21554863</Data2>
<!-- I Need the inner text of this node -->
<DST2>W01TV0NvbnRlbnRdDQo....about 70,000 Char</DST2>
.
.
.
</cProgramECUPackageOut>3345802116632N 20814620154201445546
如您所见,XML 文件的最后一行在最后一个节点之后有文本,当以 XML 格式读取文件时会出错。我尝试将文件作为文本处理,但它没有复制完整的内部文本。
我尝试了这个相关的线程,但没有完成工作。
How to get innertext in an XML
Regex + Remove all text before match
我是 C# 新手,但我努力寻找答案。
【问题讨论】:
-
先读为文本,剪掉最后一个XML结束标签后的数据,保存为临时文件,然后以XML格式读入临时文件?
-
为什么 OuterXml 不适合你?
-
我不是 100%,但您可能能够使用 XmlTextReader 读取您想要的元素,假设该文件是有效的 xml 到那时。因为它不会加载整个文件,所以假设您不尝试读取整个 xml 文件,您应该没问题。
-
我试过 XmlTextReader reader = new XmlTextReader(XMLFileName);它给了我错误
-
@AlexeiLevenkov 为什么要这样做?!我只想要内部文本。并且内部文本也不起作用(可能很长)