Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.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# 反序列化后获取XmlElementAttribute的名称_C#_Xml Serialization - Fatal编程技术网

C# 反序列化后获取XmlElementAttribute的名称

C# 反序列化后获取XmlElementAttribute的名称,c#,xml-serialization,C#,Xml Serialization,我还没有找到这方面的任何信息,也许有人能帮上忙 我有一个XML(为方便起见简化): 价值 价值 我尝试使用以下类对其进行反序列化: [XmlRoot("content")] public class Content { [XmlElement] public List<Item> Fields { get; set; } } public class Item { [XmlElement] public List<Item> Fie

我还没有找到这方面的任何信息,也许有人能帮上忙

我有一个XML(为方便起见简化):


价值
价值
我尝试使用以下类对其进行反序列化:

[XmlRoot("content")]
public class Content
{
    [XmlElement]
    public List<Item> Fields { get; set; }
}

public class Item
{

    [XmlElement]
    public List<Item> Fields { get; set; }

    [XmlText]
    public String Value { get; set; }
}
[XmlRoot(“内容”)]
公开课内容
{
[XmlElement]
公共列表字段{get;set;}
}
公共类项目
{
[XmlElement]
公共列表字段{get;set;}
[XmlText]
公共字符串值{get;set;}
}
我有两个问题:

  • 我可以得到字段的实际名称吗?如
    [XmlName]字符串名在Item类中?或者类本身的某种属性?由于某些原因,无法将节点名称设置为“字段”并添加“类型”属性;-)虽然实际的类和序列化过程非常复杂,但我不希望实现自己的序列化程序

  • 我可以添加一个像[XmlElement(“field*”)这样的通配符吗?在我知道第一个问题的答案之前,我无法测试它,所以如果有更好的选择,我也想知道


  • 谢谢。

    您可以在属性的构造函数中设置匹配的XMl元素或属性的名称

    [XmlAttribute("FieldAsAttribute")]
    
    -->将属性序列化/反序列化为Xml属性FieldAsAttribute 或


    -->将属性序列化/反序列化为Xml元素FieldAsElement这里唯一的答案是,不幸的是,这是不可能的


    因此,我们编写了自己的序列化例程。

    看起来您正在尝试创建一个可以表示任意XML的结构。如果是这样,为什么要使用XML序列化呢?使用LINQtoXML可能更合适。好吧,你是对的,它是一个相当任意的结构。关键是,我已经在很多情况下使用了XML序列化,我希望在我的整个项目中保持这种约定(这是可能的,直到现在…)。当然,如果找不到解决方案,我将切换到LINQ。它将只序列化/反序列化具有此类名称的元素。正如上面提到的@svick,我需要反序列化任意XML结构。
    [XmlAttribute("FieldAsAttribute")]
    
    [XmlElement("FieldAsElement")]