2017-05-27 14 views
-1

XmlReaderでファイルを解析する際に問題があります。C#でファイルからxmlだけを取得するには?

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

ファイルには、xml値が入っていて、次にバイト[]配列のデータが暗号化されています。私が使用したときに、私が遭遇した 問題がある:

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

私は暗号化されたバイトが始まる行で「System.Xml.XmlException」を得ました。 私の質問は:どのようにxmlの部分だけを取得し、バイト[]の部分だけを取得するのですか?

+0

なぜ 'byte []'配列がXMLタグで囲まれていませんか? – Turbot

+0

ファイルの制作を誰が制御し、より有益なファイル形式を生成するように説得することができますか? 2つの別々のファイルまたは最終的なデータを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%確信しているかどうかにかかっています。これは非常に壊れやすい答えですので、入力ファイルを完全に信頼していない場合は使用しないでください。

関連する問題