일부 입력에 대해서는 내용이 CDATA 태그로 전달되는 XML 태그를 구문 분석하는 방법을 알아 내려고했지만 모든 것에 대해서는 그렇지 않습니다.CDATA 태그의 유무에 관계없이 데이터가 포함 된 내용에 대해 IXmlSerializable을 구현하십시오.
예를 들어, 다음은 CDATA 태그가 포함 된 데이터의 샘플 콘텐츠입니다. 그러나 CDATA 태그가 생략 된 다른 시나리오가 있습니다.
<Data><![CDATA[ <h1>CHAPTER 2<br/> EDUCATION</h1>
<P> Analysis paragraph </P> ]]></Data>
어떻게 든 감지하고 입력 유형을 모두 구문 분석 할 수있는 ReadXml 메서드를 구현합니까 (CDATA 포함 또는 제외)? 지금까지 내 ReadXml() 구현은 다음과 같지만 CDATA 태그가 생략되었을 때 구문 분석 오류가 발생합니다.
public void ReadXml(XmlReader reader)
{
bool isEmpty = reader.IsEmptyElement;
reader.ReadStartElement();
if (isEmpty)
{
_data = string.Empty;
}
else
{
switch (reader.MoveToContent())
{
case XmlNodeType.Text:
case XmlNodeType.CDATA:
_data = reader.ReadContentAsString();
break;
default:
_data = string.Empty;
break;
}
reader.ReadEndElement();
}
}
실패한 코드의 예를 제공해 주시겠습니까? ReadXml 함수에 nocdata을 전달하면 올바르게 작동합니다. –
태그가 cdata surrouding tags를 가지고 있지 않을 때 저에게 실패합니다. 위의 샘플에서 CDATA 태그를 제거한 후에 확실하게 작동 했습니까? reader.ReadEndElement()를 수행 할 때 오류가 발생합니다 ... – jvtech
나는 더 간단한 것으로 테스트했습니다. 코드 샘플에 대한 내 대답을 확인하십시오. –