C# 使用c更改Xml文件的内部文本
我有以下XML文件,其名称空间如图所示 我必须改变XML文件的内部文本,但需要建议如何做 我的XML文件是:C# 使用c更改Xml文件的内部文本,c#,c#-4.0,xml-namespaces,C#,C# 4.0,Xml Namespaces,我有以下XML文件,其名称空间如图所示 我必须改变XML文件的内部文本,但需要建议如何做 我的XML文件是: <?xml version="1.0"?> <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportd
<?xml version="1.0"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
<buttons>
<workshop1>Google</workshop1>
<workshop1>Yahoo</workshop1>
<url1>www.google.co.uk</url1>
</buttons>
</Report>
我必须将第二个节点workshop1的内部文本从Yahoo更改为new。使用XElement执行此操作 您可能遇到的问题是由于此xml的命名空间:
XElement xml = getXml(); // get your xml from a service\file\ftp etc..
XNamespace ns = "http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition";
xml.Descendants(ns + "workshop1").First().Value = "new";
您的输出:
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
<buttons>
<workshop1>new</workshop1>
<url1>www.google.co.uk</url1>
</buttons>
</Report>
感谢@Amiros的回复和回答..效果很好..如果我在xml文件中有两次相同的节点该怎么办。例如,如果我有googlenew,我必须将第二个节点workshop1从新文本更改为新文本..如何操作..我可以在节点之后的xml文件中添加新节点吗。例如,我必须添加以下xml文本:DS1 SELECT FirstName,Lastname FROM Person FirstName System.String Lastname System.String请注意,这里xml文件中的第二个名称空间由可能重复的节点使用
XNamespace ns = "http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition";
var nodes = xml.Descendants(ns + "workshop1").ToList();
nodes[0].Value = "new";
nodes[1].Value = "new2";
// etc....