XDocument.Load теряет декларацию - PullRequest
1 голос
/ 05 августа 2010

У меня есть файл шаблона XML примерно так

<?xml version="1.0" encoding="us-ascii"?>
<AutomatedDispenseResponse>
    <header shipmentNumber=""></header>
    <items></items>
</AutomatedDispenseResponse>

Когда я использую XDocument.Load, по какой-то причине

<?xml version="1.0" encoding="us-ascii"?>

отброшено.

Как загрузить файл в XDocument и не потерять объявление вверху?

Ответы [ 2 ]

2 голосов
/ 05 августа 2010

загружено.Вы можете увидеть его и получить доступ к его частям, используя:

XDocument.Parse(myDocument).Declaration
2 голосов
/ 05 августа 2010

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

using System;
using System.Xml.Linq;

class Test
{
    static void Main()
    {
        XDocument doc = XDocument.Load("test.xml");
        Console.WriteLine(doc.Declaration);
    }
}

И test.xml:

<?xml version="1.0" encoding="us-ascii" ?>
<Foo>
  <Bar />
</Foo>

Вывод:

<?xml version="1.0" encoding="us-ascii"?>

Объявление isn 't отображается как XDocument.ToString() и может быть заменен при использовании XDocument.Save, потому что вы можете использовать что-то вроде TextWriter, который уже знает, какую кодировку он использует.Если вы сохраняете в поток или просто имя файла, это сохраняется в моем опыте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...