質問: 行64、行位置45、行183、行位置22からhtmlテキストノードを取得する必要があります。私はXPathをかなり新しくしています。私はどのように進めるべきですか?私はこのようなことを覚えていた: ``` var nodes=doc.DocumentNode.SelectNodes("//text()[position() > startPosition and position() < endPosition]"); ```
回答: `HtmlNode`クラスには、次の2つの重要な属性があります(必要な処理)。 * `Line` (ノードが始まる線) * `LinePosition` (ノードが終わる行) 次のようなことができます: ``` var nodes = doc.DocumentNode.Descendants("#text").Where( x => (x.Line > 64 || (x.Line == 64 && x.LinePosition >= 45)) && (x.Line < 183 || (x.Line == 183 && x.LinePosition <= 22)) ); ``` もちろん、 `doc.DocumentNode.SelectNodes("//text()").Where(...)`実行することもできます`doc.DocumentNode.SelectNodes("//text()").Where(...)` **あなたが対処しなければならない1つの問題:** ノードが終わるところそれはあなたを教えてくれないので、上記の解決策は、あなたよりもラインgreatherで終了ノード与えるかもしれない`183` 、またはラインに`183`が、より位置greatherで`22` 。そのためには、使用することができます`OuterHtml` (によって分割、それが終了する場所を知っている長さを取得するノードのプロパティを、そしていくつかの文字列操作を行う`\n`など、どのように多くの行を知っています)。