【问题标题】:XDocument.Parse throws an exception with CData inside XMLXDocument.Parse 在 XML 中使用 CData 引发异常
【发布时间】:2017-12-20 08:19:06
【问题描述】:

我正在尝试将带有 CData 的 xml 字符串放入元素中。但是解析部分 XDocument.Parse 失败,出现“解析 CDATA 时文件意外结束”。我明明可以清理xml字符串并删除CData,但是为什么不这样解析呢?

//this throws an exception
var xDoc = XDocument.Parse(GetSampleXmlText());

private string GetSampleXmlText()
    {
        //WARNING: Tests will break if element order/hierarchy is changed

        var xml =
            @"<?xml version=""1.0"" encoding=""UTF-8""?>                                                 " +
            @"<ac_application>                                                                           " +
            @"    <primary_applicant_data>                                                               " +
            @"     <first_name>Joe</first_name>                                                          " +
            @"     <middle_name></middle_name>                                                           " +
            @"     <last_name>Irving</last_name>                                                         " +
            @"     <ssn>123456789</ssn>                                                                  " +
            @"     <dob>09/09/1979</dob>                                                                 " +
            @"     <email_address>test123@gmail.com</email_address>                                      " +
            @"     <home_phone>3215551212</home_phone>                                                   " +
            @"     <mobile_phone>3215898888</mobile_phone>                                               " +
            @"     <contact_number officePhone=""1x34ad789"" />                                          " +
            @"     <contact_number cellPhone=""(321)898-8888"" />                                        " +
            @"     <other_phone>(321)666-7777</other_phone>                                              " +
            @"     <invalid_phone>32aZ9xd8</invalid_phone>                                               " +
            @"     <valid_id type=""SSN"">9999999990</valid_id>                                          " +
            @"     <valid_id type=""ITIN"">99-999-99990</valid_id>                                       " +
            @"     <address type=""current"">                                                            " +
            @"        <street_no>14</street_no>                                                          " +
            @"        <street_name>B</street_name>                                                       " +
            @"        <apt_no>155</apt_no>                                                               " +
            @"        <city>Santa Ana</city>                                                             " +
            @"        <state>CA</state>                                                                  " +
            @"        <zip_code>6654</zip_code>                                                          " +
            @"     </address>                                                                            " +
            @"     <address type=""permanent"">                                                          " +
            @"        <street_no>54</street_no>                                                          " +
            @"        <street_name>B</street_name>                                                       " +
            @"        <apt_no>104</apt_no>                                                               " +
            @"        <city>Santa Fe</city>                                                              " +
            @"        <state>CA</state>                                                                  " +
            @"        <zip_code>60750</zip_code>                                                         " +
            @"     </address>                                                                            " +
            @"    </primary_applicant_data>                                                              " +
            @"    <vehicle>                                                                              " +
            @"        <year>2013</year>                                                                  " +
            @"        <make>Toyota</make>                                                                " +
            @"        <model>Corolla</model>                                                             " +
            @"        <trim>4D Sedan</trim>                                                              " +
            @"        <odometer>175,000</odometer>                                                       " +
            @"        <price>$15,700</price>                                                             " +
            @"    </vehicle>                                                                             " +
            @"    <secret_data><![CDATA[topsecret]]</secret_data>                                        " +
            @"</ac_application>                                                                           ";

        return xml.Trim();
    }

【问题讨论】:

    标签: c# .net xml


    【解决方案1】:

    CDATA 缺少结尾 &gt;。这是正确的语法:

    <![CDATA[topsecret]]>
    

    【讨论】:

      猜你喜欢
      • 2013-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      相关资源
      最近更新 更多