[英]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.