Как остановить добавление новых строк в пустые элементы в XmlSerializer - PullRequest
0 голосов
/ 13 января 2010

Я сериализую объект следующим образом:

XmlSerializer serializer = new XmlSerializer(obj.GetType());            
using (StringWriter writer = new StringWriter())
{
    serializer.Serialize(writer, obj);
    return writer.ToString();
}

(создав такие узлы)

XmlElement newchild = doc.CreateElement(nodename);
newchild.InnerText = data;
targetnode.AppendChild(newchild);

, если data!="" все в порядке, и сериализатор возвращает:

<mynode>TheData</mynode>

Если data=="", сериализатор возвращает:

<mynode>
</mynode>

Откуда взялась эта пустая строка?

Я пробовал очевидноекак только установка newchild.InnerText=data, когда данные непустые.

Ответы [ 2 ]

1 голос
/ 13 января 2010

В XML оба значения <mynode><\mynode> и <mynode>\n</mynode> эквивалентны, поэтому это не должно иметь значения, но вы можете изменить подчеркивание XMLWriter , чтобы сериализовать вывод так, как вы этого хотите.

0 голосов
/ 13 января 2010

Нашли простой маршрут if (data.Length == 0) newchild.IsEmpty = true; else newchild.InnerText = data;

надеюсь, это кому-нибудь поможет.

...