У меня есть следующий фрагмент класса:C# XML сериализации без обертки
public class varString
{
public string KeyWord;
public string Value;
public static implicit operator string(varString v)
{
return v == null ? null : (string)v.Value;
}
}
KeyWord разрешено быть пустым.
При сериализации в XML, я получаю следующий результат, когда KeyWord равна нулю:
<varString>
<Value>value goes here</Value>
</varString>
Как я могу получить XML сериалайзер вывести следующие тогда и только тогда, когда KeyWord равно нулю ?:
<varString>value goes here</varString>
Если KeyWord не равно нулю, я бы до сих пор нравится, чтобы вывести следующее:
<varString>
<!-- Can either be <Value></Value or just straight text -->
<KeyWord>KeyWord goes here</KeyWord>
<varString>
Обратите внимание, что я уже изменил события десериализации для обработки этого случая, чтобы преобразовать одиночную строку в varString с нулевым ключом.
Зачем вам это нужно? Это упрощает анализ xml для получателя. –
Мне легче редактировать xml таким образом. KeyWord имеет значение 9/10 раз, поэтому я бы предпочел не иметь дополнительный вывод тега. Просто личное предпочтение - это все, на самом деле ничего не влияет. – Hondros