C# 将特定XML节点的长innertext保存到文本文件
我有来自第三方程序的XML文件,其中包含Base64字符串(2000000个字符) 我想将特定节点的内部文本保存到一个文本文件(大约70000个字符),问题是由于文件中的最后一行,我无法将该文件作为XML文件处理。我现在就给你看C# 将特定XML节点的长innertext保存到文本文件,c#,xml,C#,Xml,我有来自第三方程序的XML文件,其中包含Base64字符串(2000000个字符) 我想将特定节点的内部文本保存到一个文本文件(大约70000个字符),问题是由于文件中的最后一行,我无法将该文件作为XML文件处理。我现在就给你看 <?xml version="1.0" encoding="utf-16"?> <cProgramECUPackageOut xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<?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
N
487382
128
21110107
21554863
W01TV0NvbnRlbnRdDQo…大约70000字符
.
.
.
3345802116632N 20814620154201445546
正如您所看到的,XML文件中的最后一行在最后一个节点之后有文本,在将文件读取为XML时会出现错误。我试图将文件作为文本处理,但它没有复制完整的内部文本
我尝试了这个相关的线程,但没有完成工作
我是C#的新手,但我努力寻找答案。我找到了这个问题的答案,如“亚当五世”所说 所以我试过了,我想和大家分享 1-替换XML文件中的最后一行
File.Copy(XMLFileName, XMLFileName2);
string Filepath = File.ReadAllText(XMLFileName2);
string fakeEnd = "</cProgramECUPackageOut>";
lastlineStr = File.ReadLines(XMLFileName2).Last(); // the last line in the XML file
Filepath = Filepath.Replace(lastlineStr,fakeEnd);
File.WriteAllText(newPath, Filepath, Encoding.Unicode);
首先以文本形式读取,删除最后一个XML结束标记后的数据,另存为临时文件,然后以XML形式读入临时文件?为什么OuterXml对您不起作用?我不是100%,但您可以使用XmlTextReader读取所需的元素,假设该文件是有效的XML。因为它不会加载整个文件,所以假设您不尝试读取整个xml文件,那么应该可以;它给了我Error@AlexeiLevenkov为什么要这样?!我只想要里面的文字。而且内部文本也不起作用(可能很长)
XmlDocument doc = new XmlDocument();
doc.Load(newPath);
XmlNode node = doc.DocumentElement.GetElementsByTagName("DST2").Item(0);
StringBuilder sb = new StringBuilder();
sb.Append(node.InnerText);
DST2 = sb.ToString();
File.WriteAllText(@"c:\textFile.txt", sb.ToString(), Encoding.Unicode);