2014-10-06 28 views
0

我有一個從含Base64編碼字符串(200萬個字)保存特定的XML節點的長的innerText到一個文本文件

我要救一個特定節點的內部文本第三方程序來XML文件文本文件(大約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

Get XML Innertext

Regex + Remove all text before match

Get text between two words

我是新來的C#,但我在尋找答案做了艱苦的工作。

+3

它讀成文本第一,修剪出這是該數據s在最後一個XML結束標記之後,保存爲臨時文件,然後以臨時文件的形式讀入XML? – 2014-10-06 18:31:03

+0

爲什麼OuterXml不適合你? – 2014-10-06 18:37:49

+0

我不是100%,但是你可以使用XmlTextReader來讀取你想要的元素,假設文件是​​有效的xml到那一點。因爲它不會加載整個文件,所以您應該確定,假設您不嘗試讀取整個xml文件。 – juharr 2014-10-06 18:41:00

回答

0

我發現這個問題,作爲「亞當V」回答說

,所以我嘗試過了,我想分享它

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); 

2-讀文件作爲XML使用:XmlDocument的得到的innerText

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); 
相關問題