C# 如果我的xml有两个相同的节点,如何在现有xml文件中添加xml文本
我有以下xml文件:C# 如果我的xml有两个相同的节点,如何在现有xml文件中添加xml文本,c#,xml,xml-namespaces,C#,Xml,Xml Namespaces,我有以下xml文件: <?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>
<?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>text</CommandText>
</Query>
</DataSet>
<DataSet Name="table22">
<Query>
<DataSourceName>DS1</DataSourceName>
<CommandText>New text2</CommandText>
</Query>
DS1
文本
DS1
新文本2
在使用Xelement和XAttribute结束第一个“Query”元素之后,我必须添加以下xml文本
我要添加的第一个xml文本是:
<Field Name="CommunicationDataValueId">
<DataField>CommunicationDataValueId</DataField>
<TypeName>System.Int64</TypeName>
</Field>
<Field Name="DeviceMasterId">
<DataField>DeviceMasterId</DataField>
<TypeName>System.Int32</TypeName>
</Field>
通信数据值ID
System.Int64
DeviceMasterId
System.Int32
在第二个查询元素结束后要添加的第二个xml文本:
<Field Name="Min">
<DataField>Min</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="Max">
<DataField>Max</DataField>
<rd:TypeName>System.Int64</rd:TypeName>
</Field>
分钟
系统字符串
马克斯
System.Int64
怎么做
预期产出应为:
<?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>text</CommandText>
</Query>
<Field Name="CommunicationDataValueId">
<DataField>CommunicationDataValueId</DataField>
<TypeName>System.Int64</TypeName>
</Field>
<Field Name="DeviceMasterId">
<DataField>DeviceMasterId</DataField>
<TypeName>System.Int32</TypeName>
</Field>
</DataSet>
<DataSet Name="table22">
<Query>
<DataSourceName>DS1</DataSourceName>
<CommandText>New text2</CommandText>
</Query>
<Field Name="Min">
<DataField>Min</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="Max">
<DataField>Max</DataField>
<rd:TypeName>System.Int64</rd:TypeName>
</Field>
DS1
文本
通信数据值ID
System.Int64
DeviceMasterId
System.Int32
DS1
新文本2
分钟
系统字符串
马克斯
System.Int64
有人能帮我解决这个问题吗 查看以下API for-
AddAfterSelf
您可以找到每个相关的查询
元素并调用该方法,添加要添加的XML。使用XDocument
var doc = XDocument.Parse("your xml string");
//namespace
var nspace = doc.Root.Name.Namespace;
foreach (var item in doc.Descendants(nspace+"DataSet"))
{
var str = new StringBuilder();
var str1 = new StringBuilder();
str.Append("<Field Name='CommunicationDataValueId'>");
str.Append("<DataField>CommunicationDataValueId</DataField>");
str.Append("<TypeName>System.Int64</TypeName>");
str.Append("</Field>");
str1.Append("<Field Name='DeviceMasterId'>");
str1.Append("<DataField>DeviceMasterId</DataField>");
str1.Append("<TypeName>System.Int32</TypeName>");
str1.Append("</Field>");
item.Add(XElement.Parse(str.ToString()));
item.Add(XElement.Parse(str1.ToString()));
}
var doc=XDocument.Parse(“您的xml字符串”);
//名称空间
var nspace=doc.Root.Name.Namespace;
foreach(文档子体(nspace+“数据集”)中的变量项)
{
var str=新的StringBuilder();
var str1=新的StringBuilder();
str.Append(“”);
str.Append(“CommunicationDataValueId”);
str.Append(“System.Int64”);
str.Append(“”);
str1.追加(“”);
str1.追加(“DeviceMasterId”);
str1.Append(“System.Int32”);
str1.追加(“”);
Add(XElement.Parse(str.ToString());
Add(XElement.Parse(str1.ToString());
}
不,它不起作用..我面临问题,因为xml文件有重复的元素如何访问第二个数据集节点元素我没有得到错误,bt每次我的文本被添加到第一个数据集节点而不是第二个节点时,你必须添加你正在使用的代码,以便我们能够理解这一点。我已经更新了我的问题,请看一看你能分享预期的xml输出吗你能告诉我如何访问第二个节点吗,因为它是重复的我不知道如何获取it@DeepakSaralaya我已经更新了我的问题,请有一个look@DeepakSaralaya我这里有xml文件的输出…实际上,我必须在每个数据集节点上为我做最后的工作,查询后,它的附件不使用名称APCE..我不想从我的xml文件中删除名称空间我已经更新了我的问题,实际上这是我想要实现的目标,错误地,我在此之前上传了错误的一个