どうすればいいですか? .InnerTextプロパティ(contains div
要素で使用されている場合)は、私にHTMLのみを与えています。すべてのli
要素を反復して値を抽出することはできますか?HTMLリストの内容をテキストに転送する
答えて
は、それが含まれているすべての のli要素を反復処理と を抽出することができます彼らの価値? OPのコメントから
:
DOCTYPEがHTML 5であり、有効な コードです。 - ラドゥつだけ次のXPath式使用することができ、この場合
:これは任意div
要素の子孫であるすべてのli
要素の子孫であるすべてのテキストノードを選択
div//li//text()
を現在のノードの子。
XPath式を使用してXMLでノードを選択すると(HTML5は整形式のXMLです)、構築が難しく、テストが難しく、理解しにくく、保守が難しいという理由で、最も簡単で信頼性の高い方法です正規表現。ここ
は、完全なコード例ある:
using System;
using System.Xml;
class TestXPath
{
static void Main(string[] args)
{
string html5Text =
@"<html>
<head>
</head>
<body>
<div>
<ul>
<li>Line 1</li>
<li>Line 2</li>
<li>Line 3</li>
</ul>
</div>
</body>
</html>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(html5Text);
string xpathExpr = @"/*/*/div//li//text()";
XmlNodeList selection = doc.SelectNodes(xpathExpr);
foreach (XmlNode node in selection)
{
Console.WriteLine(node.OuterXml);
}
}
}
上記アプリケーションが実行されたとき、所望の、正しい結果が製造される:
Line 1
Line 2
Line 3
絶対に素晴らしい。 – Radu
@ラジード:どうぞよろしくお願いいたします。 –
は/初めに基づくことができ、私はULをループするためにjQueryのを使用し、各LIの値を返すことができた場合。 uは、これらの値のサーバー側が必要な場合は、これらの線に沿って何か...もちろん
$('li').each(function() {
alert($(this).html());
});
は、ページメソッドまたはWebサービスへのAJAX呼び出しのいくつかの並べ替えが必要であろう。
残念ながら不可能です。私はページメソッドを呼び出そうとしましたが、サーバー側で生成されたヘッダーを使用する必要があるため、私の場合は動作しません。どうやら私はAJAXを介してそれらを渡そうとすると、彼らは単に無視されます。 – Radu
@Raduページメソッドではなく単純なasmx Webサービスはどうですか? – stephen776
私はそれを試していないが、私は特別なヘッダーを渡すことができると思いますか?私は動的に生成されたファイルのためのファイルダウンロードダイアログを表示しようとしています。これらのヘッダーは私の要求に置きます: '.AddHeader(" Content-disposition "、" attachment; filename = output.txt ")'と '。 AddHeader( "Content-length"、fileLength) '。問題はAJAXのリクエストそのものだと思うので、asmxサービスは役に立ちません。 – Radu
HTML Agilitypackこれをサーバー側で実行する必要がある場合は、HTML Agilitypackを使用してください。あなたがリストを持っていると仮定すると
var textList = convertUlToText('myId');
:
var nodes = doc.SelectNodes("//ul[@id=\"myId\"]/li");
List<string> items = new List<string>();
foreach (var node in nodes)
items.Add(node.InnerText);
更新
(クライアント側のために)同じことをjqueryのスクリプト:
<script type="text/javascript">
function convertUlToText(ulID)
{
var text = '';
$('#' + ulID + ' li').each(function() {
text += $(this).html() + '\r\n';
}
return text;
}
</script>
使い方別の変数(あなたがそれを抽出した)、そしてそれとの間に何もない/リチウムと次リーエン:
string[] sep = {"</li>"};
foreach (string s in html.Replace("<li>","").Split(sep, StringSplitOptions.None))
//do something with s
試験のためのような単純なコンソールアプリケーション:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string html = "<li>123</li><li>456</li>";
string[] sep = {"</li>"};
foreach (string s in html.Replace("<li>","").Split(sep, StringSplitOptions.None))
Console.WriteLine(s);
Console.ReadLine();
}
}
}
これは動作しますが、それはvladの解決策と同じ問題があります。私はそれが技術的にそれを処理する最善の方法ではないにもかかわらず、これを行うことがあります。 – Radu
- 1. 転送S3バケットの内容
- 2. NSDictionaryの内容をNSArrayに転送
- 3. ソニーQX1内容転送 - 内部サーバーエラー500
- 4. htmlの内容のフォームを送る
- 5. help(tkinter.Tk())の内容をpythonファイルに転送するには
- 6. タグの内容を除いたHTML内のテキストの一致
- 7. PHPのメーラーは、HTMLの内容でメールを送信する
- 8. 転送リスト
- 9. メールを転送し本文に内容を追加する(Outlook 2007、VBA)
- 10. Javascriptを使用してHTML要素を別のリストに転送する
- 11. 2つのUbuntu VM間でテキストファイルの内容を転送するApache Flumeプログラム/セットアップ
- 12. iframeの内容はHTMLコードではないテキストです
- 13. フィルターされたリストの内容をテキスト文書に保存する方法
- 14. htmlメールの内容を送信できません
- 15. サーバー上のHTMLテキスト領域の内容の解析
- 16. htmlタグの内容を取得する
- 17. $ _SESSIONの内容を送信
- 18. リストの内容を抽出する
- 19. htmlファイルのテキスト領域から別のphpファイルにデータを転送
- 20. BeautifulSoup HTML無内容
- 21. iPhone最大許容セルラー転送レート
- 22. あるフォームから別のフォームにテキストを転送する
- 23. ブログの内容のhtmlフィールド
- 24. 1つのJLabelの内容を別のJLabelに転送するにはどうすればよいですか?
- 25. Android ArrayListの内容をPHPに送信
- 26. Html編集ページの内容
- 27. ModalPopupExtender HTML scollingの内容
- 28. haskellのリストにハッシュマップを転送するには
- 29. 転送テキストに下線が引かれ
- 30. Swiftの改行を失わずに帰属する文字列にHTMLテキストを転送する方法3
このXHTMLは(十分に形成されています。 XML文書)?はいの場合、優雅な解決策が存在します。 –
@Dimitre Novatchev - DoctypeはHTML 5であり、有効なコードです。 – Radu
これは良い質問です(私の+1)。私の答えは、あなたの質問に対する残りの回答よりも優れた選択肢を提供すると信じています。 :) –