XML ファイルがあるとします。
<experiment
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="experiment.xsd">
<something />
<experiment>
そして、あなたはxsdファイルを持っています:
...
<xs:attribute name="hello" type="xs:boolean" use="optional" default="false" />
...
属性「hello」が「something」要素のオプション属性であり、デフォルト値が「false」に設定されていると仮定しましょう。
XML LINQ の XDocument を使用する場合、属性が欠落しているため、プログラムが読み取ろうとして失敗します。
XDocument xml = XDocument.Load("file.xml");
bool b = bool.Parse(xml.Descendants("something").First().Attribute("hello").Value); // FAIL
LINQ は XML スキーマを (ルート要素 "experiment" の "xsi:noNamespaceSchemaLocation" 属性から) 自動的に読み込みますか、それとも手動で強制する必要がありますか?
オプションの属性とそのデフォルト値をLINQに強制的に読み取らせる方法は?