簡體   English   中英

使用類裝飾器([XmlElement])將XML反序列化為對象

[英]Deserialize XML to Object Using Class Decorators ([XmlElement])

我有一個看起來像這樣的XML ...

<SET>
    <ENTITY>
        <HEADER>
            <ELEMENT TYPE = "a"></ELEMENT>
            <ELEMENT TYPE = "b"></ELEMENT>
            <ELEMENT TYPE = "c"></ELEMENT>
        </HEADER>

        <FOO>
            <BAR TYPE = "X">12345</BAR>
        </FOO>
    </ENTITY>

</SET>

我知道要獲取元素或屬性,我可以執行以下操作:

[Serializable()]
[XmlRoot("SET")]
public class Set
{

    [XmlElement("ENTITY")]
    public List<Entity> Entity { get; set; }

}

public class Entity
{
    [XmlElement("FOO")]
    public string Foo; //Returns "12345"

    [XmlAttribute("Type")]
    public string FooType; //returns "X"
}

我需要的是只能返回類型為“ B”的ELEMENT的值。 我不要“ A”或“ C” ...

有某種可以完成的功能...

public class Header
{
    [XmlElement("ELEMENT",Type = "B")] 
    public string Element;
}

由於只需要一部分數據,因此使用Linq2Xml會更容易。

LINQ:

XDocument doc = XDocument.Parse(xmlstring);

var xElem = doc.Descendants("ELEMENT")
               .Where(e => e.Attribute("TYPE")?.Value == "b")
               .FirstOrDefault();

Xpath的:

var xElem = doc.XPathSelectElement("//ELEMENT[@TYPE='b']");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM