2016-11-16 1 views
1

Stack Overflowの質問からすべてのタグを返すメソッドを書きました。唯一の問題は、コレクション内の最後の項目が常に空の文字列であることです。なぜこのHtmlNodeCollectionの最後に空の文字列があるのですか?

private static async Task<IEnumerable<string>> GetQuestionTags(string url) 
{ 
    var document = await Task.Factory.StartNew(() => new HtmlWeb().Load(url)); 
    var nodes = document.DocumentNode.SelectNodes("//*[@id=\"question\"]/table//tr[1]/td[2]/div/div[2]//a"); 
    return nodes.Select(node => node.InnerText); 
} 

私は単にコレクションに毎回最後の項目を削除することもできますが、私はそれを行う必要はありませんしたいと思います。

なぜ、コレクションの最後のアイテムとして空の文字列が存在し、そのアイテムを取得できないのですか?

+1

を選択する; '編集タグ'私はあなたが10,000の評判を持っていないので、テキストが空白だと思います。スパンを選択し、タグだけに*、*、 'a'を選択させます。または、SE APIを使用します。選択している余分な項目は次のとおりです:http://i.imgur.com/coCLCVl.png – Rob

+0

@Rob edit-tags-wrapper spanは私のために存在しません... – Albertay

答えて

1

あなたは空要素のみを含有するもの空白をIEや、まったく何も含まれていないフィルターに述語でnormalize-space()を使用することができます...

に答えるために、私のコメントを変換:別のリンクは、あなたがあります

var xpath = "//*[@id='question']/table//tr[1]/td[2]/div/div[2]//a[normalize-space()]"; 
var nodes = document.DocumentNode.SelectNodes(xpath); 
関連する問題