我有以下功能:
public static T GetInstance<T>(string xmlString)
{
var xmlDoc = new XmlDocument();
xmlDoc.Load(new StringReader(xmlString));
string jsonString = JsonConvert.SerializeXmlNode(xmlDoc.DocumentElement);
T instance = JsonConvert.DeserializeObject(jsonString, typeof(T)) as T;
return instance;
}
它适用于普通的 XML 字符串。但是,如果输入 XML 字符串包含以下注释:
....
<!-- some comments ...
-->
....
那么对 JsonConvert.DeserializeObject() 的函数调用会抛出异常:
Newtonsoft.Json.JsonSerializationException was unhandled
Message="Unexpected token when deserializing object: Comment"
Source="Newtonsoft.Json"
StackTrace:
at Newtonsoft.Json.JsonSerializer.PopulateObject(Object newObject, JsonReader reader, Type objectType)
....
要么我必须删除 XML 字符串中的所有注释,要么我可以使用 JsonConvert 中的任何选项设置来忽略注释。
对于第一个选项,如果我必须使用 XmlDocument 删除所有注释,那么 XmlDocument 中是否有任何选项可用于将 XML 字符串转换为仅限节点的 XML 字符串?
对于第二个选项,我更喜欢,如果 Json.Net 中有任何选项可以在反序列化为对象时忽略注释?