Как десериализировать этот тип XML-файла? - PullRequest
0 голосов
/ 27 января 2012
<row>
    <id>1</id>
    <code></code>
    <name></name>
    <address></address>
    <state></state>
    <zone>?</zone>
</row>
<row>
    <id>2</id>
    <code>AA</code>
    <name>Ataria</name>
    <address>Sitapur National Highway 24, Uttar Pradesh</address>
    <state>Uttar Pradesh</state>
    <zone>NER</zone>
</row>

У меня нет корневого элемента в этом XML-файле, только элемент строки запускает и заканчивает этот XML-файл.Как десериализует этот тип данных?в с #

Ответы [ 4 ]

4 голосов
/ 27 января 2012

Если вы уверены, что отсутствующий корень - единственная проблема с вашим XML - просто добавьте его вручную:

string fileContent = File.ReadAllText(path);
string rawXml = "<root>" + fileContent + "</root>";

// now you can use LINQ-to-XML or whatever
XDocument xdoc = XDocument.Load(rawXml);
1 голос
/ 27 января 2012

Вы также можете загрузить XML-фрагмент напрямую через

XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;

using (XmlReader reader = XmlReader.Create("tracelog.xml", settings))
{
    while (reader.Read())
    {
        // Process each node of the fragment,
        // possibly using reader.ReadSubtree()
    }
}

Вы бы создали XElement s, передав результаты reader.ReadSubTree() в XElement.Load(...).

0 голосов
/ 27 января 2012

это не файл XML, если он не имеет корня.Парсер выдаст ошибку, если вы попытаетесь ее проанализировать.вы можете сделать это

<?xml version="1.0"?>
<Root>
--- add your file content here
</Root>  

, а затем указать этот путь к файлу для парсера.

0 голосов
/ 27 января 2012

Ну, для начала, это , а не файл XML - или, по крайней мере, он не представляет документ XML.

Один из вариантов - скопировать файл в новый файл, который имеет с тегами начала / конца документа ... затем вы можете загрузить его как обычный документ. Просто создайте файл, напишите начальный тег документа, скопируйте содержимое этого файла, затем напишите конечный тег документа и закройте дескриптор файла. Вы могли бы даже сделать это в памяти.

В качестве альтернативы, может быть в состоянии прочитать его как есть, во фрагментах - возможно, через XmlReader. Я не могу сказать, что это то, что я сделал, и я бы вообще рекомендовал вам создать полный XML-файл, так как тогда вы окажетесь на более знакомой территории.

...