2011-09-29 66 views
0

我使用SqlCommand.ExecuteXmlReader()FOR XML AUTO, ELEMENTS的XmlReader和INVALIDCHARACTER

我們執行的SqlCommand的,還有其中包含XML無效字符(如爲0x1F)的一列。當我與

using (var xmlReader = command.ExecuteXmlReader()) { 
xmlReader.Read(); 
    while (xmlReader.ReadState != ReadState.EndOfFile) { 
     try { 
      sb.Append(xmlReader.ReadOuterXml()); 
     } catch(Exception e) { 
      log.Error("Error in xmlReader.ReadOuterXml()", e); 
     } 
    } 
} 

現在閱讀的Xm​​lReader的結果我得到的異常「無效字符」在xmlreader.ReadOuterXml()時,它讀取無效字符。 有沒有人知道解決方法我該如何解決這個問題?

+1

可以說,如果FOR XML'返回的東西是無效的XML,那麼解決這個問題的唯一「正確」方法就是記錄MS的錯誤並將其固定在源 –

回答

1

您可以用<![CDATA[Data]]>包圍XML數據,這樣

<SomeNode><![CDATA[0x1F]]></SomeNode> 

或者您可以使用XmlConvert編碼/解碼XML數據。看看這裏的信息:http://msdn.microsoft.com/en-us/library/35577sxd%28v=VS.100%29.aspx

+0

但問題是,xmlReader.ReadOuterXml()返回XML內容,並有問題。在此之前我無法訪問XML內容。 – BennoDual

+0

@ t.kehl:該鏈接爲您提供了一個示例,您可以使用'sb.Append(xmlConvert.DecodeName(xmlReader.ReadOuterXml()));' – Mentoliptus

+0

但是異常發生在xmlReader.ReadOuterXml() – BennoDual