[英]Access to inner attribute with XMLSerializer
我试图通过使用XmlSerializer类来序列化XML文件。 Xml结构看起来像:
<?xml version="1.0"?>
<Datatable xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Assets>
<A_elements>
<A_el ID="1">
<Fields>
<Field Hint="First field">
<Title> A_field </Title>
<Value> 111 </Value>
</Field>
<Field Hint="Second field">
<Title> B_field </Title>
<Value> 222 </Value>
</Field>
.....
.....
</Fields>
</A_el>
</A_elements>
</Assets>
</Datatable>
指定[XmlElement(“”)]时如何访问字段值?
例如,我希望从此xml加载的C#对象的可读性为: LoadedObject.Assets.A_elements[0].A_field
并且上面代码的输出应为“ 111”
我正在尝试以这种方式解决这个问题:
[XmlRoot("Assets"), Serializable]
public class Assets
{
[XmlElement("A_elements")]
public Actors actors { get; set; }
}
public class A_elements
{
[XmlElement("A_elements")]
public List<A_el> A_elList { get; set; }
}
public class A_el
{
[XmlAttribute("ID")]
public int id { get; set; }
[------??????------]
public string A_field { get; set; }
}
字段没有任何唯一标识符,并且所有元素中都有很多字段。 我真的很感谢您的帮助。
提前致谢。
在A_el类中创建一个Field [] Fields成员,并创建一个具有Hint,Title和Value成员的相应Field类。
public class A_el
{
[System.Xml.Serialization.XmlAttribute("ID")]
public int id { get; set; }
[System.Xml.Serialization.XmlArray(ElementName = "Fields")]
[System.Xml.Serialization.XmlArrayItem("Field", typeof(Field))]
public Field[] Fields { get; set; }
private string[] _A_elements;
private string[] A_elements
{
get
{
if(null == _A_elements)
{
_A_elements = (from field in Fields select field.Value).ToArray();
}
return _A_elements;
}
}
}
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class Field
{
public string Title { get; set; }
public string Value { get; set; }
[System.Xml.Serialization.XmlAttributeAttribute()]
public string Hint { get; set; }
}
一个方便的技巧:当您想通过序列化构造C#对象时,将一个CS文件添加到您的项目中并打开它。 复制要序列化的XML,将光标置于cs文件中,而不是粘贴,请从“编辑”菜单中选择“选择性粘贴”。 它将为您提供“将XML粘贴为类”的选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.