2014-01-23 58 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工具说“无效”(而不是“格式不正确”)时,它们通常意味着您递交了错误类型的文档。检查这个工具的期望。特别是,由于您没有在您向我们展示的示例中指定名称空间,请检查它是否需要名称空间绑定。