У меня есть следующая функция:
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 есть какая-либо опция, игнорирующая комментарии при десиализации объекта?