c# - xml 解析字符引用 : invalid xmlChar value 0

标签 c# xml web-services xml-parsing

每当我使用带有一些输入的谷歌浏览器将请求传递给 web 服务 web 方法时,它都会给我以下响应:

This page contains the following errors:

error on line 101 at column 40: xmlParseCharRef: invalid xmlChar value 0

下面是第一个错误之前的页面呈现。

840092 10777579 VER 1900-12-31T00:00:00 SYS EMV AKT VIR Arnar Mar Jonsson         Arnar's Bud- og Landbrugscervice 25251628 910673 AKT 2009-10-02T16:21:37 J 2003-    09-18T18:59:40 2399-12-31T00:00:00 N DK 6621 Gesten Gyvelvej 11 0 VIR 2011-11-    05T05:46:03 Arnar's Bud- og Landbrugscervice VIR NKA 2010-06-26T19:12:27 Arnars     Bud- & Landbrugsservice VIR NKA 2010-01-18T06:35:48 Arnar's Bud- og     Landbrugscervice VIR NKA 2009-10-23T06:25:55 Arnar's Bud- og Landbrugscervice v/     Arnar Mar Jonsson VIR NKI 2009-10-05T12:41:28 Arnar'S Bud- og Landbrugscervice V     /Arnar Mar Jonsson VIR NKA 2009-10-05T12:41:28 Arnar'S Bud- og Landbrugscervice     V /Arnar Mar Jonsson v/ Arnar Mar Jon VIR NKI 2004-05-04T15:57:52 Arnar Mar     Jonsson VIR NTI 2004-04-30T17:01:15

它在 Internet Explorer 中以正确的方式呈现。 在 IE 中形成的 XML 是:

<?xml version="1.0" encoding="utf-8" ?> 
<IdCardSearchResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-    instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"     xmlns="http://experiannordic.com/">
  <IdCardArray>
    <IdCard>
      <IdCardNo>5840092</IdCardNo> 
      <ConnectedIdCardNo>10777579</ConnectedIdCardNo> 
      <NameProtectionFromDate xsi:nil="true" /> 
      <VerificationType>VER</VerificationType> 
      <VerificationDate>1900-12-31T00:00:00</VerificationDate> 
      <VerificationInit>SYS</VerificationInit> 
      <IdCardType>EMV</IdCardType> 
      <IdCardStatus>AKT</IdCardStatus> 
      <DataSource>VIR</DataSource> 
      <PersonData>
        <FirstName>Arnar</FirstName> 
        <LastName>Mar Jonsson</LastName> 
        <DateOfBirth xsi:nil="true" /> 
        <CprStatusDate xsi:nil="true" /> 
      </PersonData>
      <CompanyData>
        <CompanyName>Arnar's Bud- og Landbrugscervice</CompanyName> 
        <CvrNumber>25251628</CvrNumber> 
        <KobNumber>910673</KobNumber> 
        <KobStatus>AKT</KobStatus> 
        <KobAjourDate>2009-10-02T16:21:37</KobAjourDate> 
      </CompanyData>
      <AddressData>
        <CurrentAddress>J</CurrentAddress> 
        <AddressFromDate>2003-09-18T18:59:40</AddressFromDate> 
        <AddressToDate>2399-12-31T00:00:00</AddressToDate> 
        <ForeignAddress>N</ForeignAddress> 
        <CountryCode>DK</CountryCode> 
        <PostalCode>6621</PostalCode> 
        <PostalDistrict>Gesten</PostalDistrict> 
        <Street>Gyvelvej</Street> 
        <Number>11</Number> 
        <NumberTo>0</NumberTo> 
        <SourceType>VIR</SourceType> 
      </AddressData>
      <DateOfBirth xsi:nil="true" /> 
      <CompanyName>Arnar's Bud- og Landbrugscervice</CompanyName> 
      <Source>VIR</Source> 
      <Type>NKA</Type> 
    </NameData>
    <NameData>
      <CompanyName>Arnars Bud- & Landbrugsservice</CompanyName> 
      <Source>VIR</Source> 
      <Type>NKA</Type> 
    </NameData>
    <NameData>
      <CompanyName>Arnar's Bud- og Landbrugscervice</CompanyName> 
      <CompanyName>Arnar'S Bud- og Landbrugscervice V /Arnar Mar      Jonsson</CompanyName> 
      <CompanyName>Arnar'S Bud- og Landbrugscervice V /Arnar Mar Jonsson v/ Arnar Mar Jon</CompanyName>
      <CompanyName>Arnar's Budservice v/ Arnar Mar Jonsson</CompanyName> 
      <NameToDate xsi:nil="true" /> 
      <DateOfBirth xsi:nil="true" /> 
      <CompanyName>Arnar's Budservice</CompanyName> 
      <Source>VIR</Source> 
      <Type>NKA</Type> 
    </NameData>
      <AddressToDate xsi:nil="true" /> 
      <ForeignAddress>N</ForeignAddress> 
      <CountryCode>DK</CountryCode> 
      <PostalCode>6000</PostalCode> 
      <PostalDistrict>Kolding</PostalDistrict> 
      <Street>Tvedvej</Street> 
      <Number>20</Number> 
      <NumberTo>0</NumberTo> 
      <SourceType>VIR</SourceType> 
      </AddressData>
      </AddressArray>
      <IdCardRelationArray>
        <IdCardRelationData>
          <IdCardNumberFrom>5840092</IdCardNumberFrom> 
          <RelationType>EMV2PER</RelationType> 
          <IdCardNumberTo>10777579</IdCardNumberTo> 
          <IdCardRelationDate>2004-08-14T14:18:27</IdCardRelationDate> 
          <IdCardRelationChangeDate xsi:nil="true" /> 
        </IdCardRelationData>
      </IdCardRelationArray>
    </IdCard>
  </IdCardArray>
</IdCardSearchResponse>

为什么这个请求的数据没有显示在 google chrome 中??

最佳答案

不同的浏览器在处理无效 XML 的方式上有不同的解析引擎和差异。在这种情况下,Chrome(正确地)比 IE 更严格。

要修复此错误,您需要将下一行中的 & 替换为 &,这是 XML 中“&”字符的有效表示。

<CompanyName>Arnars Bud- & Landbrugsservice</CompanyName> 

应该变成:

<CompanyName>Arnars Bud- &amp; Landbrugsservice</CompanyName>

不幸的是,您不能总是相信来自其他系统的 XML 输出会正确形成,因此检测或清理它的一些逻辑总是谨慎的。

关于c# - xml 解析字符引用 : invalid xmlChar value 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30216913/

相关文章:

java - 在特殊情况下使用 XPATH 提取属性值

javascript - 如何使用 JavaScript 创建带有 SOAP 消息的请求?

database - 关于将数据从一个数据库同步到其他应用程序数据库的有效方法的任何建议?

c# - 如何使用 ReceiveAsync 测试 Akka.NET actor 中的异步异常

c# - Linq 在提交更改之前找不到插入的记录

python - 使用 Python 发布 XML 文件

c# - SalesForce 出站消息监听器上的 System.IndexOutOfRangeException

c# - Stackoverflow 样式 URL(自定义传出 URL)

c# - 基于对象集合的动态ContextMenu的模式/方法

java - JAXB 为非根元素提供命名空间