在xml文件的中间插入用户定义的节点

时间:2012-03-08 14:14:38

标签: linq-to-xml

我有以下xml文件。

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

现在我想将MyCube兄弟插入标签或节点。 我使用linq到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将其删除到xml并保存文件。我动态地这样做。 请帮帮我。

由于

1 个答案:

答案 0 :(得分:1)

XML文档中的以下行称为 Xml声明

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

您可以使用XmlWriter来实现目标。将OmitXmlDeclaration的{​​{1}}属性设置为XmlWriterSettings表示您不需要将 Xml声明写入您的xml文件:

true