<books>
<book name="Christmas Cheer" price="10" />
<book name="Holiday Season" price="12" />
<book name="Eggnog Fun" price="5" special="Half Off" />
</books>
私はlinqを使ってこれを解析したいと思っています。私の現在の作業方法は次のとおりです。Linq To Xml Null属性のチェック
var books = from book in booksXml.Descendants("book")
let Name = book.Attribute("name") ?? new XAttribute("name", string.Empty)
let Price = book.Attribute("price") ?? new XAttribute("price", 0)
let Special = book.Attribute("special") ?? new XAttribute("special", string.Empty)
select new
{
Name = Name.Value,
Price = Convert.ToInt32(Price.Value),
Special = Special.Value
};
これを解決する方法があるかどうかは疑問です。 T
がタイプである場合にのみ動作すること
public static class XmlExtensions
{
public static T AttributeValueOrDefault<T>(this XElement element, string attributeName, T defaultValue)
{
var attribute = element.Attribute(attributeName);
if (attribute != null && attribute.Value != null)
{
return (T)Convert.ChangeType(attribute.Value, typeof(T));
}
return defaultValue;
}
}
注:欠落している属性の例をカプセル化するために拡張メソッドを使用する方法について
おかげで、
- ジャレッド
それは素晴らしいです!大好きです。ありがとう。 – Howel