Вставить пользовательский узел в середине XML-файла - PullRequest
1 голос
/ 08 марта 2012

У меня есть следующий XML-файл.

<Process xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
  <Object>
    <DatabaseID>myDB</DatabaseID>
  </Object>
  <Type>ProcessFull</Type>
  <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>

Теперь я хочу вставить брата MyCube в тег или узел. Я использовал linq to xml, как показано ниже

 var mydoc = XDocument.Load("cubeProcess.xml");
XNamespace xmns2 = XNamespace.Get("http://schemas.microsoft.com/analysisservices/2003/engine");
           mydoc
                .Element(xmns2 + "Process")
                .Element(xmns2 + "Object")
                .Add(new XElement(xmns2 + "CubeID"));
                mydoc.Save("C:\\Users\\ymihir\\Documents\\Visual Studio 2008\\Projects\\ConnectToExtrems\\ConnectToExtrems\\cubeProcess.xml");

Но вывод меняется следующим образом

<?xml version="1.0" encoding="utf-8"?>
<Process xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
  <Object>
    <DatabaseID>myDB</DatabaseID>
    <CubeID>myCube</CubeID>
  </Object>
  <Type>ProcessFull</Type>
  <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>

В этом дополнительном выводе я не хочу первый тег <?xml version="1.0" encoding="utf-8"?> как удалить его с помощью linq to xml и сохранить файл. Я делаю это динамически. Пожалуйста, помогите мне.

Спасибо

1 Ответ

1 голос
/ 08 марта 2012

Следующая строка в вашем XML-документе называется Декларация XML :

<?xml version="1.0" encoding="utf-8"?>

Вы можете использовать XmlWriter для достижения своей цели.Установка OmitXmlDeclaration свойства XmlWriterSettings в true означает, что вам не нужна Xml декларация , записанная в ваш XML-файл:

var doc = XDocument.Load("file4.xml");
XNamespace ns = "http://schemas.microsoft.com/analysisservices/2003/engine";

doc.Element(ns + "Process").Element(ns + "Object").Add(new XElement(ns + "CubeID", "MyCube"));

var settings = new XmlWriterSettings { OmitXmlDeclaration = true };
using (var writer = XmlWriter.Create("file5.xml", settings))
{
    doc.Save(writer);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...