2014-01-23 59 views
1

我無法解碼一些編碼的XML。解碼XML字符串

我得到「XmlException未處理:在根級別的數據是無效的線1點的位置1」

<argo-response status="1" status-id="INFO"> 
    <messages> 
    <message message-id="INFO" message-severity="INFO" message-text="[class-name:LBCTSubmitInGateDataWebService]" message-detail="[class-name:LBCTSubmitInGateDataWebService]" /> 
    <message message-id="GROOVY_RESULT" message-severity="INFO" message-text="Result: &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;&#xA;&lt;lbct:submit-ingate-data-response xmlns='(Had to remove link)' xmlns:xsi='(Had to remove link)' xmlns:lbct='(Had to remove link)' lbct:message-id='789637546382669' lbct:message-date='2014-01-23T06:37:32.0Z' lbct:facility-id='LBCT' lbct:complex-id='LBCT' lbct:sender='TOS'&gt;&#xA; &lt;lbct:create-truck-visit-response&gt;&amp;lt;![CDATA[&amp;lt;argo:gate-response xmlns:argo=&quot;(Had to remove link)&quot; xmlns:xsi=&quot;(Had to remove link)&quot; xsi:schemaLocation=&quot(Had to remove link)&quot;&amp;gt;&amp;lt;create-truck-visit-response&amp;gt;&amp;lt;truck-visit tv-key=&quot;52947590&quot; gos-tv-key=&quot;123&quot; tracking-tag-id=&quot;98765432&quot; is-internal=&quot;false&quot; next-stage-id=&quot;ingate&quot; status=&quot;OK&quot; gate-id=&quot;LBCT&quot; entered=&quot;2014-01-23T05:47:28&quot;&amp;gt;&amp;lt;trucking-co id=&quot;WNWI&quot; /&amp;gt;&amp;lt;truck id=&quot;98765432&quot; tag-id=&quot;98765432&quot; license-nbr=&quot;D98765432&quot; /&amp;gt;&amp;lt;chassis-profile id=&quot;40&quot; /&amp;gt;&amp;lt;driver card-id=&quot;98765432&quot; driver-name=&quot;LICENSEABC&quot; /&amp;gt;&amp;lt;/truck-visit&amp;gt;&amp;lt;/create-truck-visit-response&amp;gt;&amp;lt;/argo:gate-response&amp;gt;]]&amp;gt;&lt;/lbct:create-truck-visit-response&gt;&#xA; &lt;lbct:process-truck-response&gt;&amp;lt;![CDATA[Unknown IN lane LANE20 for gate LBCT&amp;lt;argo:gate-response xmlns:argo=&quot;(Had to remove link)&quot; xmlns:xsi=&quot;(Had to remove link)&quot; xsi:schemaLocation=&quot;(Had to remove link)&quot;&amp;gt;&amp;lt;process-truck-response /&amp;gt;&amp;lt;/argo:gate-response&amp;gt;]]&amp;gt;&lt;/lbct:process-truck-response&gt;&#xA;&lt;/lbct:submit-ingate-data-response&gt;" message-detail="Result: &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;&#xA;&lt;lbct:submit-ingate-data-response xmlns='(Had to remove link)' xmlns:xsi='(Had to remove link)' xmlns:lbct='(Had to remove link)' lbct:message-id='789637546382669' lbct:message-date='2014-01-23T06:37:32.0Z' lbct:facility-id='LBCT' lbct:complex-id='LBCT' lbct:sender='TOS'&gt;&#xA; &lt;lbct:create-truck-visit-response&gt;&amp;lt;![CDATA[&amp;lt;argo:gate-response xmlns:argo=&quot;(Had to remove link)&quot; xmlns:xsi=&quot;(Had to remove link)&quot; xsi:schemaLocation=&quot;(Had to remove link)&quot;&amp;gt;&amp;lt;create-truck-visit-response&amp;gt;&amp;lt;truck-visit tv-key=&quot;52947590&quot; gos-tv-key=&quot;123&quot; tracking-tag-id=&quot;98765432&quot; is-internal=&quot;false&quot; next-stage-id=&quot;ingate&quot; status=&quot;OK&quot; gate-id=&quot;LBCT&quot; entered=&quot;2014-01-23T05:47:28&quot;&amp;gt;&amp;lt;trucking-co id=&quot;WNWI&quot; /&amp;gt;&amp;lt;truck id=&quot;98765432&quot; tag-id=&quot;98765432&quot; license-nbr=&quot;D98765432&quot; /&amp;gt;&amp;lt;chassis-profile id=&quot;40&quot; /&amp;gt;&amp;lt;driver card-id=&quot;98765432&quot; driver-name=&quot;LICENSEABC&quot; /&amp;gt;&amp;lt;/truck-visit&amp;gt;&amp;lt;/create-truck-visit-response&amp;gt;&amp;lt;/argo:gate-response&amp;gt;]]&amp;gt;&lt;/lbct:create-truck-visit-response&gt;&#xA; &lt;lbct:process-truck-response&gt;&amp;lt;![CDATA[Unknown IN lane LANE20 for gate LBCT&amp;lt;argo:gate-response xmlns:argo=&quot;(Had to remove link)&quot; xmlns:xsi=&quot;(Had to remove link)&quot; xsi:schemaLocation=&quot;(Had to remove link)&quot;&amp;gt;&amp;lt;process-truck-response /&amp;gt;&amp;lt;/argo:gate-response&amp;gt;]]&amp;gt;&lt;/lbct:process-truck-response&gt;&#xA;&lt;/lbct:submit-ingate-data-response&gt;" /> 
    </messages> 
    <submit-ingate-data-response xmlns:lbct="(Had to remove link)" xmlns="(Had to remove link)" xmlns:xsi="(Had to remove link)" lbct:message-id="789637546382669" lbct:message-date="2014-01-23T06:37:32.0Z" lbct:facility-id="LBCT" lbct:complex-id="LBCT" lbct:sender="TOS"> 
    <create-truck-visit-response>&lt;![CDATA[&lt;argo:gate-response xmlns:argo="(Had to remove link)" xmlns:xsi="(Had to remove link)" xsi:schemaLocation="(Had to remove link)"&gt;&lt;create-truck-visit-response&gt;&lt;truck-visit tv-key="52947590" gos-tv-key="123" tracking-tag-id="98765432" is-internal="false" next-stage-id="ingate" status="OK" gate-id="LBCT" entered="2014-01-23T05:47:28"&gt;&lt;trucking-co id="WNWI" /&gt;&lt;truck id="98765432" tag-id="98765432" license-nbr="D98765432" /&gt;&lt;chassis-profile id="40" /&gt;&lt;driver card-id="98765432" driver-name="LICENSEABC" /&gt;&lt;/truck-visit&gt;&lt;/create-truck-visit-response&gt;&lt;/argo:gate-response&gt;]]&gt;</create-truck-visit-response> 
    <process-truck-response>&lt;![CDATA[Unknown IN lane LANE20 for gate LBCT&lt;argo:gate-response xmlns:argo="http://www.navis.com/argo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.navis.com/argo GateWebserviceResponse.xsd"&gt;&lt;process-truck-response /&gt;&lt;/argo:gate-response&gt;]]&gt;</process-truck-response> 
    </submit-ingate-data-response> 
</argo-response> 

我需要的唯一部分是過程卡車反應。我已經能夠成功地將創造卡車的訪問拉出來。

這是我目前使用的嘗試和解碼和解析這個代碼:

string xmlString = textBox1.Text; 
      string action = String.Empty; 
      XDocument xmlDoc = XDocument.Parse(xmlString); 
      XNamespace lbctns = "http://www.lbct.com/TOS"; 

      XElement processTruckElement = xmlDoc.Document.Descendants(lbctns + "process-truck-response").FirstOrDefault(); 

      if (processTruckElement != null) 
      { 
       var decodedProccessTruckResponseElement = processTruckElement.Value; 
       if (decodedProccessTruckResponseElement != null) 
       { 
        decodedProccessTruckResponseElement = decodedProccessTruckResponseElement.Replace("<![CDATA[", "").Replace("]]>", ""); 
       } 
       try 
       { 
        var parsedSubmitMultipleElement = XElement.Parse(decodedProccessTruckResponseElement); 

       } 
       catch 
       { 

       } 
      } 

任何幫助將非常感激。

+0

您在XML片段的頂部缺少頭文件/聲明'<?xml version =「1.0」encoding =「utf-8」?>'。 – slugster

回答

1

process-truck-response元素的內容不包含有效的XML片段。

Unknown IN lane LANE20 for gate LBCT<argo:gate-response xmlns:argo="http://www.navis.com/argo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.navis.com/argo GateWebserviceResponse.xsd"><process-truck-response /></argo:gate-response> 

你試圖解析出來作爲一個XElement和失敗(這是正確的)。

您應該驗證您是否擁有有效的XML,或者至少處理包含您不期望的內容的情況。

1

當XML工具說「無效」(而不是「格式不正確」)時,它們通常意味着您遞交了錯誤類型的文檔。檢查這個工具的期望。特別是,由於您沒有在您向我們展示的示例中指定名稱空間,請檢查它是否需要名稱空間綁定。