C# 替换xml属性值而不剪切它是原始xml
我试图替换从数据库中检索到的xml属性值,在替换之后,我想用更改后的属性值获取原始xml 以下是我迄今为止所做的尝试:C# 替换xml属性值而不剪切它是原始xml,c#,asp.net,xml,C#,Asp.net,Xml,我试图替换从数据库中检索到的xml属性值,在替换之后,我想用更改后的属性值获取原始xml 以下是我迄今为止所做的尝试: private void Page_Load(object sender, EventArgs e) { DatabaseRepository repository = .... var xml = ExtractXML(repository.MyXML); repository.MyXML = xml; }
private void Page_Load(object sender, EventArgs e)
{
DatabaseRepository repository = ....
var xml = ExtractXML(repository.MyXML);
repository.MyXML = xml;
}
private XElement ExtractXML(string oriXML)
{
try
{
var xml = XElement.Parse(oriXML);
if (xml != null)
{
var extract = xml.Descendants("fields");
foreach (XElement xElement in extract)
{
// The error occurs from below
if (xElement.Attribute("name").Value.ToLower().Equals("from") && xElement.Attribute("column").Value.ToLower().Equals("fromplayerdate"))
{
xElement.Attribute("value").Value = "From";
}
if (xElement.Attribute("name").Value.ToLower().Equals("to") && xElement.Attribute("column").Value.ToLower().Equals("toplayerdate"))
{
xElement.Attribute("value").Value = "To";
}
}
xml.Save(oriXML);
}
return xml;
}
catch (XmlException ex)
{
LOGGER.Error(string.Format("ExtractXML(). Exception: {0}", ex.Message));
return null;
}
}
以下是我的XML:
在值更改后,我需要它,它将像存储库中的一样。MyXML:
我在foreach语句之后的第一个if语句中遇到以下错误:
对象引用未设置为对象的实例
非常感谢你的回答
谢谢你你想操纵
xml.substands(“字段”)
而不是xml.substands(“字段”)
谢谢你@Martin Honnen。已解决:)好的,xml.Save()
用于将xml树保存到一个文件中(文件名作为参数传递),当您从字符串加载时,我想您希望将xml.ToString()
存储到存储库中。另外请注意,在xml中,您说的是column=“ToPlayerDateDate”
(重复日期?),但在代码中检查…等于(“toplayerdate”)
.Hi@S.Serp,它应该是单个的日期
,我的错误是在复制粘贴到这里时没有注意到。感谢指出:)
<fields>
<field name="From" column="FromPlayerDate" value="Player"></field>
<field name="To" column="ToPlayerDate" value="Player"></field>
</fields>
<fields>
<field name="From" column="FromPlayerDate" value="From"></field>
<field name="To" column="ToPlayerDate" value="To"></field>
</fields>