XMLファイル(親子ノード)の構造を持ち、従来のXMLファイルではない一連のファイルがあります。 構造のようになります。私はそれを解析し、通常のテキストファイルと同じようにそれを使用しようとしています。このファイルに(例えば、XMLDocumentの)標準のC#のXMLライブラリを使用することはできませんのでC#でテキストファイルとしてXML構造化ファイルを解析する
、<_ML_Message>
<TransactionId Value="0x02" />
<GroupNo Value = "2" />
<AbortOnError Value = "255" />
<MessageBody>
<GetProcParameterRequest>
<ServerId Value="0xFFFFFFFFFFFF" />
<ParameterTreePath Qty = "1" >
<_OctetString Value="0x0000800029FF" />
</ParameterTreePath>
</GetProcParameterRequest>
</MessageBody>
<CRC16 Value = "0" />
<EndOfMlMessage />
</_ML_Message>
<_ML_Message>
<TransactionId Value="0x03" />
<GroupNo Value = "3" />
<AbortOnError Value = "255" />
<MessageBody>
<CloseRequest>
</CloseRequest>
</MessageBody>
<CRC16 Value = "0" />
<EndOfMlMessage />
</_ML_Message>
string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
string xml = File.ReadAllText(baseDirectory + "MyXMLFile.xml");
if (xml.StartsWith("TransactionId"))
{
//Try to get the value
}
このように解析するのは現時点では面倒ですが、この種のファイルを解析する別の方法があるのだろうかと思いました。
なぜあなたは、標準のXMLライブラリを使用することはできませんを読み取るために必要なすべてのtransactionIdsを取得したい場合は?あなたが '<! DOCTYPE ...> 'あなたはそれを有効なXMLファイルにする必要がありますか?それとも他の方法では無効ですか? (コメント、CData、引用などのXML仕様には従いません)。 –
Regexはやり方です...しかし、制限が深刻でない限り、あなたは間違いなくパーサライブラリを使うべきです。 –
複数のルートノードがすべて ' 'にまとめられていると、投稿したものは正しく解析されます。 XElement.Parse()では、doctypeは必要ありません。 –