Как использовать XML Serializer для чтения XML-данных из строки? - PullRequest
1 голос
/ 14 марта 2012

Я следую этому руководству (самое подробное, которое я нашел): http://blog.allanglen.com/2009/09/quickly-generate-c-data-objects-from-xml

Но на этапе "Шаг 4: чтение файла XML" я сталкиваюсь с проблемой, я не извлекаю свои XML-данные из файла, я получаю их как строку из базы данных.

Я новичок в C # и XML, и я не могу понять, как заставить его работать с шага 4 со строкой!

Я использую:

 XmlDocument doc = new XmlDocument();
                doc.Load(new StringReader(dbString));

Где dbString - строка из базы данных.

1 Ответ

3 голосов
/ 14 марта 2012

Вы можете использовать метод LoadXml :

string xml = ... go and fetch XML from your db
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);

Также обратите внимание, что хотя XmlDocument еще не объявлен устаревшим, XDocument являетсяпредпочтительный способ работы с XML-документами в памяти, начиная с .NET 3.5 и выше:

string xml = ... go and fetch XML from your db
XDocument doc = XDocument.Parse(xml);

ОБНОВЛЕНИЕ:

Извините, на самом деле я не просматривал сообщение в блогеВы связалиЯ был введен в заблуждение фрагментом кода, который вы разместили в своем вопросе, который на самом деле не имеет ничего общего с тем, что было сделано на шаге 4 в вышеупомянутой статье, и тем, о чем вы спрашиваете.Вы, кажется, пытаетесь десериализовать строку XML в объект.Для этого вы можете использовать StringReader:

string xml = ... go and fetch XML from your db
XmlSerializer serializer = new XmlSerializer(typeof(catalog));
using (StringReader reader = new StringReader(xml))
{
     catalog catalog = (catalog)serializer.Deserialize(reader);
}
...