我有一組具有XML文件(父 - 子節點)結構但不是傳統XML文件的文件。 的結構是這樣的:將XML結構化文件解析爲C#中的文本文件
<_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>
既然不能在這個文件我試圖解析它和使用它像一個普通的文本文件中使用標準的C#XML庫(例如,爲XMLDocument),
string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;
string xml = File.ReadAllText(baseDirectory + "MyXMLFile.xml");
if (xml.StartsWith("TransactionId"))
{
//Try to get the value
}
但是用這種方式解析它現在很麻煩,我想知道是否有其他解析這種文件的方法。
爲什麼你不能使用標準的XML庫?什麼阻止你插入'<! DOCTYPE ...>'您需要將其設置爲有效的XML文件?或者在其他方面無效? (不遵循XML規範的註釋,CData,Quotes等)。 –
正則表達式是要走的路...但除非限制嚴重,否則您肯定應該使用解析器庫。 –
如果它的多個根節點只是將它們全部包裝在一個' '中,那麼你發佈的東西就會解析得很好。使用XElement.Parse()您不需要文檔類型。 –