Как читать / писать сложные объекты с XmlWriter / XmlReader - PullRequest
1 голос
/ 11 декабря 2010

Я пытался найти простой способ написания XML с использованием XmlReader / XmlWriter.Мне не очень нравится использовать интерфейс "IXmlSerializable", но у меня нет выбора для некоторых моих классов данных.

В любом случае, то, что я хочу сделать, довольно просто:

private MyClass myObject;
public void WriteXml(XmlWriter writer)
{
    writer.WriteObject(myObject); // <-- this method doesn't exists
}

Итак, я нашел 2 обходных пути:

  1. Напишите свою собственную программу для написания моего объекта вручную.Довольно нелепо, поскольку .Net уже делает это.
  2. Создайте новый сериализатор, используя StringWriter, и используйте метод WriteValue (string).

Я еще не тестировал второй, но ядумаю, что это, вероятно, будет работать (не уверен из-за результата ReadValue).

Тогда мой вопрос: я пропускаю что-то важное или это единственный способ?Или есть лучший способ справиться с этим?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 11 декабря 2010

Поиграв, я нашел кое-что довольно простое.Вот код, с которым я играл для тех, кому интересно, как я исправил свою проблему (похоже на чтение и элемент):

    public static void WriteElement(XmlWriter writer, string name, object value)
    {
        var serializer = new XmlSerializer(value.GetType(), new XmlRootAttribute(name));
        serializer.Serialize(writer, value);
    }

Я не знаю, почему я усложнил проблему, но не могубыть проще, чем это.

0 голосов
/ 11 декабря 2010

Попробуйте использовать класс XmlDocument. Он использует XmlNode в качестве основы для простого написания XML. Вы также можете сериализовать класс или использовать класс DataSet для записи xml или прочитать его обратно в структуру типа набора данных или XmlDocument.

...