注意在此代碼中,我試圖在選擇它之前檢查rdfs:range元素的存在。我這樣做是爲了在運行時避免可能的空引用異常。如何使用XElement檢查元素的存在性?
private readonly XNamespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
private readonly XNamespace rdfs = "http://www.w3.org/2000/01/rdf-schema#";
private readonly XElement ontology;
public List<MetaProperty> MetaProperties
{
get
{
return (from p in ontology.Elements(rdf + "Property")
select new MetaProperty
{
About = p.Attribute(rdf + "about").Value,
Name = p.Element(rdfs + "label").Value,
Comment = p.Element(rdfs + "comment").Value,
RangeUri = p.Elements(rdfs + "range").Count() == 1 ?
p.Element(rdfs + "range").Attribute(rdf + "resource").Value :
null
}).ToList();
}
}
這有點兒煩我,我真正想要做的是這樣的:
p.HasElements(rdfs + "range") ?
p.Element(rdfs + "range").Attribute(rdf + "resource").Value :
null
但是沒有HasElement(string elementName)
方法可用。
我想我可以創建一個方法擴展來做到這一點,但我想知道是否有內置的東西,或者如果有其他方法可以做到這一點?
是的,這個更簡潔。我喜歡它,我想我會用它來檢查一些其他屬性。 – 2010-07-28 10:35:16