我想弄清楚一種方法來解析xml標記,其中內容傳入與CDATA標記爲一些輸入,但不是所有。實現IXmlSerializable爲包含數據的內容包含或不包含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();
}
}
您能提供一個失敗代碼的例子嗎?如果我將 nocdata傳遞給您的ReadXml函數,它工作得很好。 – 2010-02-16 18:43:57
當我的標籤沒有cdata surrouding標籤時,它對我來說是失敗的。當你從上面的樣本中刪除CDATA標籤後,確定它適用於你?執行reader.ReadEndElement()時出現錯誤... – jvtech 2010-02-16 19:03:52
我測試了一個更簡單的問題。檢查我的答案代碼示例。 – 2010-02-16 20:27:40