2017-05-27 24 views
-1

我用XmlReader解析文件時遇到問題。我有一個文件包含這樣的信息:如何從c#中的文件只得到xml?

<Users> 
<User> 
<Email>email</Email> 
<Key>23456</Key> 
</User> 
</Users> 
asdfsof48f43uf489f3yf3y39fh3f489f3hf94[t]45.54tv,]5t 

文件包含xml值,然後從byte []數組加密的數據。 我遇到的問題是當我使用:

using (var reader = XmlReader.Create(fileName)) 
     { 
      while (reader.Read()) 
      { 
       //parsing 
      } 
     } 

我得到了「System.Xml.XmlException」在行,其中加密字節開始。 我的問題是:如何檢索只有XML部分和只有字節[]部分?

+0

爲什麼'byte []'數組不包含XML標籤? – Turbot

+0

誰控制着文件的製作,你能否說服他們產生更有用的文件格式,例如:兩個單獨的文件或將最終數據放在XML中? –

+0

是文件發佈整個XML。發佈的部分是不正確的XML形式,所以沒有更多的信息人們假設該文件無效。 – jdweng

回答

0

如果萬一被加密的數據始終是您可以使用下面片段閱讀給定資料的唯一XML部分的XML數據的大小

var fileLines = File.ReadAllLines(@"c:\temp\file.txt"); 
var xmlFromFile = string.Join("", fileLines, 0, fileLines.Length - 1); 
using (var reader = XmlReader.Create(new StringReader(xmlFromFile))) 
{ 
    // Your logic goes here 
} 
+0

謝謝,它幫助 – pkk

0

你可以做字符串解析限制的最後一行.. 。

int start, end; 
string myFile = File.ReadAllText("..."); 
start = myFile .IndexOf("<Users>"); 
end = myFile .IndexOf("</Users>") + 8; 

myFile = myFile.Substring(start, end-start); 

在這一點上,你可以加載到一個XML文檔,如果你想。這完全取決於你對文件格式的100%確定。這是一個非常脆弱的答案,所以如果您對輸入文件沒有完全信任,請不要使用它。

相關問題