次のようなマークアップを含む XML ファイルがいくつかあります。
<?xml version="1.0" encoding="ISO-8859-1"?>
<clients>
<client id="00000" name="Donald Duck">
<group id="AAA" name="ClientInfo">
<term id="Sex">Male</term>
<term id="Status">In a relationship</term>
</group>
<group id="BBB" name="ClientTelephoneNumbers">
<term id="Home">0000-0000000</term>
<term id="Cell">1111-1111111</term>
</group>
<group id="CCC" name="WorkingStatus">
<term id="HasAJob">Yes</term>
<term id="Where">Somewhere</term>
</group>
</client>
<client id="11111" name="Daisey Duck">
<group id="AAA" name="ClientInfo">
<term id="Sex">Female</term>
<term id="Status">In a relationship</term>
</group>
<group id="BBB" name="ClientTelephoneNumbers">
<term id="Home">2222-2222222</term>
<term id="Cell">3333-3333333</term>
</group>
<group id="CCC" name="WorkingStatus">
<term id="HasAJob">Unknown</term>
<term id="Where">Unknown</term>
</group>
</client>
</clients>
私がやりたいことは、これらの値の一部のみを出力用に選択することです。
次のようなコードがある場合:
Dim xml As XDocument = Xdocument.Load(ducks.xml)
For Each Duck As XElement in xml.Descendants("client")
Dim Name As String = Duck.Attribute("Name").Value
Next
アヒルの名前を取得しますが、携帯電話番号、自宅の電話番号、およびステータスを取得したいとしましょう。属性が何かに等しい要素から値を取得するにはどうすればよいですか?
実際の場合、グループ ID はより複雑なので、要素を数える必要はなく、要素の属性によって選択したいと思います。このような:
Dim xml As XDocument = Xdocument.Load(ducks.xml)
For Each Duck As XElement in xml.Descendants("client")
Dim Name As String = Duck.Attribute("Name").Value
Dim Cellphone As string = Duck.Element("group WHERE id IS BBB").Element("term WHERE id IS Cell").Value
Dim Homephone As string = Duck.Element("group WHERE id IS BBB").Element("term WHERE id IS Home").Value
Next
いくつかのクエリを試しましたが、実際にはうまくいきません。助言がありますか?
編集注:それは、クエリや Duck.Element("blah WHERE blah") にある何かに対する私の本当の試みではありません。それは、私が望むものを説明するためだけのものです...