【发布时间】:2009-08-12 11:00:16
【问题描述】:
我正在尝试解析一个重命名空间的 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 Submit消息的响应。
如何获得以下值:
TransactionID、StatusCode、StatusText、MessageID
我尝试了 Linq-Xml,但当查询包含“soapenv:Body”之类的值时没有运气。
【问题讨论】:
-
我很好奇。与其解析消息,不如使用服务引用?
-
使用“添加服务引用”命令创建对返回此数据的服务的服务引用。然后你可以像方法一样调用它,并像带有属性的类一样处理元素。
-
我知道这个选项,但该服务不提供wsdl或disco。
-
感谢您发布 XML。我浏览了 www.3gpp.org 网站。我不会相信任何组织会在 2009 年说以下内容:“此参考点应基于 SOAP 1.1 [68] 和使用 HTTP 传输层的带有附件的 SOAP 消息 [69]。未来版本 可能更新此协议决定以使用标准化版本的 SOAP 并支持额外的传输层实现。”这可能是我第一次看到一个组织故意使用非标准 SOAP。
标签: c# parsing soap xml-namespaces mm7