C# 如何将节点和属性附加到现有Xml文件
我有以下XML文件。我必须使用C# 如何将节点和属性附加到现有Xml文件,c#,xml,xml-namespaces,C#,Xml,Xml Namespaces,我有以下XML文件。我必须使用XElement和XAttribute添加一个节点。如何做到这一点 <?xml version="1.0" encoding="UTF-8"?> <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporti
XElement
和XAttribute
添加一个节点。如何做到这一点
<?xml version="1.0" encoding="UTF-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
<DataSets>
<DataSet Name="Data">
<Query>
<DataSourceName>DS1</DataSourceName>
<CommandText>SELECT FirstName,LastName FROM Person</CommandText>
</Query>
</DataSet>
<DataSet Name="table22">
<Query>
<DataSourceName>DS1</DataSourceName>
<CommandText>New text2</CommandText>
</Query>
您可以尝试先选择
元素,然后使用方法在
元素之后添加
元素,例如:
var doc = XElement.Parse(xml);
XNamespace ns = "http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition";
var query = doc.Element(ns + "DataSets").Element(ns + "DataSet").Element(ns + "Query");
Console.WriteLine("before :");
Console.WriteLine(doc.ToString());
Console.WriteLine("");
XNamespace rd = "http://schemas.microsoft.com/SQLServer/reporting/reportdesigner";
var field = new XElement(ns+"Fields",
new XElement(ns+"Field", new XAttribute("Name", "ReportId")
, new XElement(ns+"DataField", "ReportId")
, new XElement(rd + "TypeName", "System.Int64")));
query.AddAfterSelf(field);
Console.WriteLine("after :");
Console.WriteLine(doc.ToString());
我想添加System.Int64,我得到的bt我已经更新了我的问题…如果我的xml中有相同的节点,如何插入数据file@ha07如何在DataSet name=“table22”的后面添加xml文本在您的另一个问题中回答了这个问题。在旅途中更改/添加需求对我来说相当烦人。如果你发布了另一个关于变更/新要求的问题,最好通知链接,并根据原始要求关闭/继续上一篇文章中的讨论。我不知道如何关闭讨论,通知其他人我这边很容易
var doc = XElement.Parse(xml);
XNamespace ns = "http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition";
var query = doc.Element(ns + "DataSets").Element(ns + "DataSet").Element(ns + "Query");
Console.WriteLine("before :");
Console.WriteLine(doc.ToString());
Console.WriteLine("");
XNamespace rd = "http://schemas.microsoft.com/SQLServer/reporting/reportdesigner";
var field = new XElement(ns+"Fields",
new XElement(ns+"Field", new XAttribute("Name", "ReportId")
, new XElement(ns+"DataField", "ReportId")
, new XElement(rd + "TypeName", "System.Int64")));
query.AddAfterSelf(field);
Console.WriteLine("after :");
Console.WriteLine(doc.ToString());