我有一组具有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()您不需要文档类型。 –