Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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元素值_C#_.net_Xml - Fatal编程技术网

C# 动态更改xml元素值

C# 动态更改xml元素值,c#,.net,xml,C#,.net,Xml,上面是具有指定类的类 我想更改ElementName=“api\U响应” api_响应值到动态值,如 总有一天会的 [XmlRoot(ElementName="api_response")] public class ApiResponse { [XmlElement( ElementName = "api_name")] public string api_name { get; set; } } 或 我必须动态地改变这个 我尝试过这样的事情,但没办法解决

上面是具有指定类的类

我想更改ElementName=“api\U响应”

api_响应值到动态值,如

总有一天会的

[XmlRoot(ElementName="api_response")]
public class ApiResponse 
{
        [XmlElement( ElementName = "api_name")]
        public string api_name { get; set; }
}

我必须动态地改变这个

我尝试过这样的事情,但没办法解决

ElementName="second response"
但它不起作用

请帮忙


谢谢

如果您正在寻找序列化,这将可以:

 XmlAttributeOverrides config1 = new XmlAttributeOverrides();
 config1.Add(typeof(ORM.ApiResponse), "ElementName",new XmlAttributes {XmlDefaultValue = "myvalue" };
编辑:

要返回字符串,可以使用
stringwriter

            var apiResponse = new ApiResponse() { api_name = "test api" };

            using (var writer = XmlWriter.Create(@"apiData.xml"))
            {
                var ser = new System.Xml.Serialization.XmlSerializer(
                    typeof(ApiResponse), new XmlRootAttribute("newRoot"));
                ser.Serialize(writer,apiResponse);
            }

你这样做是为了序列化吗?目的是什么?我必须将根元素显示为“第一个响应”或第二个响应“但是它总是显示api_响应您可以在最终的XML上使用DOM并更改根元素的名称我可以有任何示例吗请注意XML元素名称不能包含空格。还要检查设计,如果对第一个和第二个响应使用不同的xml元素是合适的,也就是说,它们实际上有不同的布局吗?如果是这样,考虑声明两种不同的XML结构——如果不是,尝试将第一/第二区分在属性中。你想返回什么?我必须返回这个生成的XML. XML将保存在文件“ApIDATA.XML”中。您可以从该位置加载此文件。
            var apiResponse = new ApiResponse() { api_name = "test api" };

            using (var writer = XmlWriter.Create(@"apiData.xml"))
            {
                var ser = new System.Xml.Serialization.XmlSerializer(
                    typeof(ApiResponse), new XmlRootAttribute("newRoot"));
                ser.Serialize(writer,apiResponse);
            }
var apiResponse = new ApiResponse() { api_name = "test api" };                
using (stringwriter = new StringWriter())
{
    var ser = new System.Xml.Serialization.XmlSerializer(
    typeof(ApiResponse));
    ser.Serialize(stringwriter,apiResponse);
    var xmlString= stringwriter.GetStringBuilder().ToString();
    return xmlString;
}