2017-12-20 1 views
0

XMLata를 요소 안에 넣으려고합니다. 그러나 구문 분석 부분 XDocument.Parse "CDATA 구문 분석 중에 예기치 않은 파일 끝"실패합니다. 분명히 XML 문자열을 정화하고 CData를 제거 할 수 있지만 왜이 구문 분석이 아닌가요?XDocument.Parse가 XML 내부에서 CData를 사용하여 예외를 throw합니다.

//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>[email protected]</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(); 
    } 

답변

1

CDATA에는 >이 누락되었습니다.

<![CDATA[topsecret]]> 
0

문자열 "contact_number의 OfficePhone과는"한 번만 나타납니다 ...에 StackOverflow에

+0

에 오신 것을 환영합니다 : 이것은 올바른 구문입니다! 왜 이것이 문제이고 해결책이 무엇인지에 대한 몇 가지 추가 설명은 답변자뿐만 아니라 미래의 독자에게 도움이 될 것입니다. 추가 설명을 추가하면 답변을 투표자가 질문하거나 투표 할 수 있습니다. –

관련 문제