在C#中解析和查询SOAP

我试图解析一个严重命名的SOAP消息(源也可以在这里找到):

   0a00f556419041c08d8479fbaad02a3c    5.3.0  1000 Success  B08CF7B847DAD89C752334BDEBB69B5B    

仅针对上下文,这是MM7提交消息的响应。

如何获得以下值:

TransactionID,StatusCode,StatusText,MessageID

我试过Linq-Xml但是当查询包含像“soapenv:Body”这样的值时没有运气。

如果您正在尝试使用命名空间构建XName ,则需要从XNamespace和字符串构建它,例如

 XNamespace soapenv = "http://schemas.xmlsoap.org/soap/envelope/"; XName body = soapenv + "Body"; 

然后,当您使用带有Linq-to-XML的XNamebody ”时,它将匹配文档中的元素。

您可以执行类似的操作以允许使用命名空间构建其他元素的名称。

有一种更简单的方法。 您可以使用{}表示法直接指定命名空间:

 var soap = XElement.Load(soapPath); var transactionID = from e in soap.Descendants("{http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2}TransactionID") select e.Value; 

我认为您将需要使用XmlDocument(用于读取XML)和XmlNamespaceManager(用于检索命名空间数据)并使用来自这些对象的XPath查询。