XPathExpression で使用する compilestring を作成したいと考えています。既にサブセットにナビゲートし、イテレーターを作成しました。その反復子の現在の位置に基づいて、新しい currentNode を作成します。ここで、そのノードのみにつながる正確な式を作成したいので、これらの子のみを選択するイテレータを作成できます。
public XPathNodeIterator extractSubChildIterator(XPathNavigator currentNode)
{
XPathNavigator nav = currentNode.Clone();
string myXPathString = "/"+ nav.LocalName + "["+ HOWDOIGETTHISNUMBER(nav) +"]";
while (nav.MoveToParent())
{
if (!(nav.Name == ""))
myXPathString = "/" + nav.LocalName + "[" + HOWDOIGETTHISNUMBER(nav) + "]" + myXPathString;
}
myXPathString += "/*";
XPathExpression expr = nav.Compile(myXPathString);
return currentNode.Select(expr);
}
関数 HOWDOIGETTHISNUMBER() は、よくわからないもののプレースホルダーです。このページの examplelist に基づいて式文字列を作成します- 「/catalog/cd[1] はカタログの最初の cd 子を選択します」