私はXMLを持っています。
<?xml version="1.0" encoding="utf-8"?>
<A1>
<B2>
<C3 id="1">
<D7>
<E5 id="abc" />
</D7>
<D4 id="1">
<E5 id="abc" />
</D4>
<D4 id="2">
<E5 id="abc" />
</D4>
</C3>
</B2>
</A1>
これはサンプルコードです:
var xDoc = XDocument.Load("Test.xml");
string xPath = "//B2/C3/D4";
//or string xPath = "//B2/C3/D4[@id='1']";
var eleList = xDoc.XPathSelectElements(xPath).ToList();
foreach (var xElement in eleList)
{
Console.WriteLine(xElement);
}
完全に機能しますが、名前空間をルート ノード A1 に追加すると、このコードは機能しません。解決策を検索すると、これが見つかりましたが、これはDescendants()メソッドを使用して XML をクエリします。私の理解では、<D7>、<D4 id="1">、および <D4 id="2"> に同じタグが存在するため、<E5> を検索していた場合、このソリューションは失敗します。
私の要件は、ノードが特定の XPath に存在するかどうかを検索することです。子孫を使用してこれを行う方法があれば、喜んで使用します。そうでない場合は、名前空間を使用して検索する方法を教えてください。
これが重複している場合はお詫び申し上げます。