DOMstringオブジェクト、XMLHttpRequestを使用してサーバーから取得するいくつかのWebページのテキストがあります。私はそれからいくつかの特定のタグの間にある部分文字列をカットする必要があります。これを行う簡単な方法はありますか?そのようなメソッドは、私の場合は動作しません、私の場合は、Webページの内容が動的なので、私は部分文字列の先頭と末尾を指定することはできません(私はそれが<tag>
と</tag>
)。もしあれば、それは、トリックDOMstringパーサー
答えて
DOMStringはほとんどの(すべての)JavaScriptブラウザ環境の文字列として実装されているため、正規表現、DOMParser、jQueryなどのライブラリで提供されるHTMLパーサーなど、任意の解析手法を使用できます。例:
もちろん、これはひどい考えです。あなたが本当にjQueryを使って、例えば、DOMパーサを使用する必要があります。
$('tag', htmlString).html();
jQueryの例の上に明確にし、[編集]、それは以下のようなものを行うための同等です:
function extractText2(tagName, htmlString) {
var div = document.createElement('div'); // Build a DOM element.
div.innerHTML = htmlString; // Set its contents to the HTML string.
var el = div.getElementsByTagName(tagName) // Find the target tag.
return (el.length > 0) ? el[0].textContent : null; // Return its contents.
}
extractText2('tag', '<tag>Foo</tag>'); // => "Foo"
extractText2('x', '<x><y>Bar</y></x>'); // => "Bar"
extractText2('y', '<x><y>Bar</y></x>'); // => "Bar"
このソリューションは、正規表現ソリューションが失敗するHTML構文のニュアンスを処理するため、正規表現ソリューションより優れています。もちろん、クロスブラウザーのテストが必要なので、jQuery(またはPrototype、ExtJSなど)のようなライブラリへの推奨が必要です。
囲むタグと仮定すると、文字列内で一意である...
domString.match(/.*<tag>(.*)<\/tag>.*/)[0]
または
/.*<tag>(.*)<\/tag>.*/.exec(domString)[0]
らしいですテキストのみがあり、タグは再表示されます。
"<tag>asd</tag>".match(/<tag>[^<]+<\/tag>/);
Regex.match(string)ではなくString.match(Regex)ですか? – dievardump
Opps、はい、javascriptの素敵な折衷的な機能の1つは、テストが式にありますが、一致は文字列にあります:)。今修正する編集 – Gus
として@Gusを行うが、改善されなければならないよう
改善されていません。これは機能しません。あなたの文字列が ""のタグの中に "
編集者がそれを壊したと私は気付かなかった: - /、この更新版はどうですか? – Davsket
コンテンツにタグが含まれていない場合にのみ機能します。また、データが含まれていない場合は、まったく一致しないので、逆参照しようとするとエラーが発生する可能性があります。 – Gus
これは、周囲のタグの名前が分かっていれば、これでうまくいくはずです。
- 1. Cordovaファイル転送DOMString
- 2. 実際にDOMStringとは何ですか?
- 3. プロパティ "getter object(DOMString name);"ドキュメントIDL内
- 4. PHP PDFパーサーSMALOtとTCPDFパーサー
- 5. JQueryテーブル・パーサーのカスタム・パーサー
- 6. SAX xmlパーサーまたはDOMパーサー?
- 7. [パーサーsetDelegate:self];
- 8. HTMLパーサー
- 9. SAXパーサー:
- 10. iphone:xmlパーサーfor ajax
- 11. パーサーの実装
- 12. Lua用HTTPパーサー
- 13. .NET HTML DOMパーサー?
- 14. C/C++ JSONパーサー
- 15. 多目的パーサー
- 16. ExcelパーサーJSP Spring
- 17. LALR対LLパーサー
- 18. キノ数パーサー
- 19. クエリー・ストリング・パーサー
- 20. Python iniパーサー
- 21. XML-RPCパーサー?
- 22. Windows httpパーサー
- 23. OopFactory X12パーサーは
- 24. Java csvパーサー/ライター
- 25. PHP HTML「パーサー」
- 26. PHP - RSSパーサーXML
- 27. Python SAXパーサー
- 28. JavascriptのHTMLパーサー
- 29. JavaScriptのXMLパーサー
- 30. rssパーサーin .net
ありがとうございました、あなたと他のアドバイスが動作します。しかし、それはいくつかの種類の "ハック"のようにいくつかの単語に応じて文字列をカットするようだ。一般に、ページのコンテンツは変更され、コードは機能しません。 htmlページをf.e.、xml-documentとして受け取る方法はありますか?それから、必要な要素を取りますか? –
これは '$( 'tag'、domString).html();'でやっていることです。暗黙的にDOM要素に変換された文字列 'domString'のタグ要素の内容を取得します。 jQuery $(aXMLString)はdom要素を返します。 (私はそれが作成された要素内のinnerHTMLとwritedと考え、element.getChildren()を介して返されます) – dievardump