C # XmlSerializer условно сериализует список < T > Предметы

Я не уверен, что это причина, но она позволяет (или разрешает, поскольку теперь есть лучшие способы сделать это) для объекта, который будет использоваться как блокировка:

Object lock = new Object();

....


synchronized(lock)
{
}
2
задан Tim van Peterson 18 January 2019 в 15:20
поделиться

2 ответа

Насколько я понял, вы хотите отфильтровать ваш XML перед сериализацией.

Я предлагаю вам использовать LINQ для этого:

var filteredMaps = Maps.Where(map => !string.IsNullOrWhiteSpace(map.Item)).ToList();

Обратите внимание на вызов .ToList() в конце строки. Это важно, так как ваш XmlSerializer имеет тип List<Map>, я полагаю. Поместите эту строку перед сериализацией объекта, и результат должен выглядеть следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfMap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Map item="something" uri="foo" />
</ArrayOfMap>

Не забывайте using System.Linq;

0
ответ дан Taysumi 18 January 2019 в 15:20
поделиться

Ну, вы можете попробовать создать XmlWriter, который отфильтровывает все элементы с атрибутом xsi: nil или содержит пустую строку и передает все остальные вызовы базовому стандартному XmlWriter для «очистки» сериализованного XML.

0
ответ дан Zegar 18 January 2019 в 15:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: