一部の入力に対してコンテンツがCDATAタグとともに渡されるxmlタグを解析する方法を見つけようとしていますが、すべてではありません。
たとえば、以下は、CDATAタグを含むデータに対して受け取るサンプルコンテンツです。ただし、CDATAタグが省略されるシナリオは他にもいくつかあります。
<Data><![CDATA[ <h1>CHAPTER 2<br/> EDUCATION</h1>
<P> Analysis paragraph </P> ]]></Data>
どういうわけかそれを検出し、両方のタイプの入力(CDATAの有無にかかわらず)を解析できるReadXmlメソッドを実装するための洗練された方法はありますか?これまでのところ、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();
}
}