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