<Root>
<Sub>
<Name>a</Name>
<Value>1</Value>
</Sub>
<Sub>
<Name>b</Name>
<Value>2</Value>
</Sub>
</Root>
Value
要素に依存する要素の値を選択するにはどうすればよいName
ですか?
編集: XDocument では、「a」があるときに値「1」を取得するにはどうすればよいですか。
Value
プロパティに直接アクセスする代わりに、キャスト ノードを使用することをお勧めします。
int value = xdoc.Descendants("Sub")
.Where(s => (string)s.Element("Name") == "a")
.Select(s => (int)s.Element("Value"))
.FirstOrDefault();
欠落しているノードのデフォルト値 (ゼロ) がニーズに合わない場合は、Sub
値を取得する前に必要な要素が存在することを確認できます。
var sub = xdoc.Descendants("Sub")
.FirstOrDefault(s => (string)s.Element("Name") == "a");
if (sub != null)
value = (int)sub.Element("Value");
または、XPath と Linq を使用して単純に 1 行:
int value = (int)xdoc.XPathSelectElement("//Sub[Name='a']/Value");
これはそれを行う必要があります:
doc
(が のインスタンスであると仮定XDocument
)
string name = "a";
var items = doc.Descendants("Sub")
.Where(s => (string)s.Element("Name") == name)
.Select(s => s.Element("Value").Value);
items
IEnumerable<string>
この場合はになります。
必要な値が 1 つだけであることがわかっている場合:
string name = "a";
string value = doc.Descendants("Sub")
.Where(s => (string)s.Element("Name") == name)
.Select(s => s.Element("Value").Value)
.FirstOrDefault();
あなたはこれを試すことができます、役立つかもしれません
var results = from row in xdoc.Root.Descendants("Sub")
where row.Element("Name").value ="value"
select new XElement("row", row.Element("Value"));
さて、考えてみてください...
タグ<Name>
の値を読み取るよりも、XML ファイルの内部テキストが条件と一致するかどうかを確認するだけで、簡単に XML ファイルを読み取ることができます。<value>
ここでは、 C#コードからXMLファイルを読み取る方法についての回答を得ることができます。