我有一个看起来像这样的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;
}
答案 0 :(得分:1)
由于您只需要数据子集,因此使用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']");