0
我已經使用CheckCharacters的重寫設置實現了我的XmlTextReader。事情是這樣的:XmlTextReader在規範化處於打開狀態時忽略CheckCharacters = false
class MyXmlTextReader : XmlTextReader
{
public MyXmlTextReader(TextReader input) : base(input)
{
}
/// <summary>
/// Settings
/// </summary>
public override XmlReaderSettings Settings
{
get { return new XmlReaderSettings { CheckCharacters = false }; }
}
}
當我用它與無效的XML數據一切正常的情況下正常工作:
var sr3 = new StringReader(xml);
var xr3 = new MyXmlTextReader(sr3);
var obj3 = (MyObject)ser.Deserialize(xr3);
但只要我打開正常化,我開始變得INVALIDCHARACTER例外:
var sr3 = new StringReader(xml);
var xr3 = new MyXmlTextReader(sr3);
xr3.Normalization = true;
var obj3 = (MyObject)ser.Deserialize(xr3);
有沒有一種方法來規範化,但同時忽略無效的XML字符?
下面是一個示例應用程序來重現問題: https://gist.github.com/ncksol/29bd6490edd0580c25f7338b417b37d3
你能提供一些最小的XML來重現嗎? –
當然可以。你去 - https://gist.github.com/ncksol/29bd6490edd0580c25f7338b417b37d3 –
爲什麼你會從'XmlTextReader'繼承,而不是僅僅傳遞'XmlReaderSettings'到'XmlTextReader.Create'?我不確定這種重寫'Settings'的方式甚至是合法的,因爲它不會*返回讀者創建的設置。 –