我正在尝试解析大量命名空间的SOAP消息(也可以在here中找到源):
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<ns1:TransactionID soapenv:mustUnderstand="1" xsi:type="xsd:string" xmlns:ns1="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2">0a00f556419041c08d8479fbaad02a3c</ns1:TransactionID>
</soapenv:Header>
<soapenv:Body>
<SubmitRsp xmlns="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2">
<MM7Version>5.3.0</MM7Version>
<Status>
<StatusCode xsi:type="ns2:responseStatusType_StatusCode" xmlns:ns2="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2" xmlns="">1000</StatusCode>
<StatusText xsi:type="ns3:statusTextType" xmlns:ns3="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2" xmlns="">Success</StatusText>
</Status>
<MessageID>B08CF7B847DAD89C752334BDEBB69B5B</MessageID>
</SubmitRsp>
</soapenv:Body>
</soapenv:Envelope>
仅就上下文而言,这是MM7提交消息的响应。
如何获得以下值:
TransactionID,StatusCode,StatusText,MessageID
我尝试使用Linq-Xml,但是当查询中包含诸如“ soapenv:Body”之类的值时,没有运气。
最佳答案
如果您尝试使用命名空间构建XName
,则需要从XNamespace
加上字符串来构建它,例如
XNamespace soapenv = "http://schemas.xmlsoap.org/soap/envelope/";
XName body = soapenv + "Body";
然后,当将
XName
“ body
”与Linq-to-XML一起使用时,它将与文档中的<soapenv:Body>
元素匹配。您可以做类似的事情以允许使用名称空间构建其他元素的名称。