Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 替换xml属性值而不剪切它是原始xml_C#_Asp.net_Xml - Fatal编程技术网

C# 替换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; }

我试图替换从数据库中检索到的xml属性值,在替换之后,我想用更改后的属性值获取原始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>