我试图找出一种解析 xml 标记的方法,其中内容通过 CDATA 标记传递以获取某些输入,但不是全部。
例如,以下是我将收到的包含 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();
}
}