17

XElement私はこのようなシングルを持っています:

<row flag="1" sect="" header="" body="" extrainfo="0" />

次に、次のようなクラスがあります。

public class ProductAttribute
{
    public string Flag { get; set; }
    public string Sect { get; set; }
    public string Header { get; set; }
    public string Body { get; set; }
    public string Extrainfo { get; set; }
}

XElementこれをProductAttributeオブジェクトに変換するにはどうすればよいですか?

4

6 に答える 6

14

あなたはこのようにすることができます:

1) まず、クラスに属性を与える必要があります:

[XmlRoot("row")]
public class ProductAttribute
{
    [XmlAttribute("flag")]
    public string Flag { get; set; }
    [XmlAttribute("sect")]
    public string Sect { get; set; }
    [XmlAttribute("header")]
    public string Header { get; set; }
    [XmlAttribute("body")]
    public string Body { get; set; }
    [XmlAttribute("extrainfo")]
    public string Extrainfo { get; set; }
}

2) XElement または単純な xml 文字列を次のように逆シリアル化できます。

ProductAttribute productAttribute = new ProductAttribute();
XElement xElement = XElement.Parse(
"<row flag='1' sect='3' header='4444' body='3434' extrainfo='0' />");

//StringReader reader = new StringReader(
//"<row flag='1' sect='3' header='4444' body='3434' extrainfo='0' />");

StringReader reader = new StringReader(xElement.ToString());
XmlSerializer xmlSerializer = new XmlSerializer(typeof(ProductAttribute));
productAttribute = (ProductAttribute)xmlSerializer.Deserialize(reader);

お役に立てば幸いです。

于 2013-09-04T09:34:46.493 に答える
1

これはかなり簡単に思えます (少なくともエラーチェックなしで...):

var res = new ProdicAttribute {
  Flag = (string)element.Attribute("flag"),
  Sect = (string)element.Attribute("sect"),
  ...
}
于 2013-09-04T07:56:52.337 に答える