2014-02-17 58 views
0

對於Linq to XML我很新穎。我試圖讓MSGID節點的元素值在此消息:從具有多個名稱空間的xml消息讀取元素值

<?xml version="1.0" encoding="UTF-8"?> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Header> 
     <nsah:AuditHeader xmlns:nsah="http://schemas.rnab.nl/giraal/AuditHeader/1.0"> 
      <To>mq://rifb/accounting/AP</To> 
      <RelatesTo>mq://rnab/giraal/PE/BookingStatusAPS/01</RelatesTo> 
      <Action>mq://rifb/accounting/AP/BookingService/01</Action> 
      <From>mq://rnab/giraal/PE</From> 
     </nsah:AuditHeader> 
    </soapenv:Header> 
    <soapenv:Body> 
     <ns5:CREATEPMNT_FSFS_REQ xsi:schemaLocation="http://fcubs.ofss.com/service/FCUBSCPGServices CommPmntGtwyCreate-Req-Full.xsd" xmlns:ns5="http://fcubs.ofss.com/service/FCUBSCPGServices"> 
      <ns5:FCUBS_HEADER> 
       <ns5:SOURCE>SOURCE</ns5:SOURCE> 
       <ns5:UBSCOMP>FCUBS</ns5:UBSCOMP> 
       <ns5:MSGID>MsgiD</ns5:MSGID> 
       <ns5:USERID>UId</ns5:USERID> 
       <ns5:BRANCH>BRANCH</ns5:BRANCH> 
       <ns5:MODULEID>MId</ns5:MODULEID> 
       <ns5:SERVICE>SERVICE</ns5:SERVICE> 
       <ns5:OPERATION>Operation</ns5:OPERATION> 
       <ns5:DESTINATION>Destination</ns5:DESTINATION> 
      </ns5:FCUBS_HEADER> 
      <ns5:FCUBS_BODY> 
       <ns5:PmntDETAILS> 
        <ns5:XREF>XREF321654987</ns5:XREF> 
        <ns5:AMOUNT>0.09000</ns5:AMOUNT> 
        <ns5:VALUE_DATE>2012-12-20</ns5:VALUE_DATE> 
        <ns5:CCY>EUR</ns5:CCY> 
        <ns5:CUST_AC_NO>123456789</ns5:CUST_AC_NO> 
        <ns5:CPTY_AC_NO>987654321</ns5:CPTY_AC_NO>  
       </ns5:PmntDETAILS> 
      </ns5:FCUBS_BODY> 
     </ns5:CREATEPMNT_FSFS_REQ> 
    </soapenv:Body> 
</soapenv:Envelope> 

這是我的時刻:

Dim XDoc As XDocument = XDocument.Load(Variable_Echo.OpenedFile) 
Dim XNs_soapenv As XNamespace = "http://schemas.xmlsoap.org/soap/envelope/" 
Dim XNs_ns5 = "http://fcubs.ofss.com/service/FCUBSCPGServices" 
Dim Body = XDoc.Descendants(XNs_soapenv + "Body") 
Dim MsgId = Body.Descendants(XNs_ns5 + "MSGID") 

當調試我的代碼,我會在下面errro MsgId =「附加信息:':'字符,十六進制值0x3A,不能包含在名稱中。」

幫助是極大的讚賞

回答

2

您隱式聲明XNs_ns5爲String。因此:XNs_ns5 + "MSGID"表示代表元素名稱而不是前綴+元素名稱的連接字符串。由於元素名稱不應包含冒號(:),該表達式將觸發錯誤。將XNs_ns5的聲明更改爲XNamespace,錯誤消失:

Dim XNs_ns5 As XNamespace = "http://fcubs.ofss.com/service/FCUBSCPGServices" 
相關問題