[解決済み] DOMParserをnode jsで使ってみる
質問
私のjsコードでDOMParserを使用しようとすると問題が発生します。 私のコードでは、xmlhttp.responseTextソープレスポンスでxmlファイルを取得しています。 私はJSON形式でその要素にアクセスできるようにしたいので、私のコードは次のようになります。
var xml = new DOMParser();
xml = xml.parseFromString(xmlhttp.responseText, 'text/xml');
var result = xmlToJson(xml);
このようなエラーメッセージが表示されます。 ReferenceError: DOMParser is not defined
編集する このリンクは、私のjavascriptがnode.jsファイルであるため、HTMLページ内にないため、私には機能しませんでした。 JavaScript DOMParserのアクセスinnerHTMLと他のプロパティ
どのように解決するのですか?
DOM操作やXHRのような多くのブラウザの機能は、NodeJSネイティブでは利用できません。これは、DOMにアクセスするための典型的なサーバータスクではないからです。
DOMの容量はライブラリに大きく依存します。ここでは、使用できる主なツールの簡単な比較をしています。
-
jsdom
: DOM レベル 4 を実装しています。 最新のDOM規格 そのため、最新のブラウザでできることは、すべてjsdom
. これは、Node上でブラウザを操作するための事実上の業界標準であり、Mocha、Vue Test Utils、Webpack Prerender SPA Plugin、およびその他多くのプラグインで使用されています。const jsdom = require("jsdom"); const dom = new jsdom.JSDOM(`<!DOCTYPE html><p>Hello world</p>`); dom.window.document.querySelector("p").textContent; // 'Hello world'
-
htmlparser2
同じですが、より複雑な API を使用する代わりに、性能と柔軟性が強化されています。const htmlparser = require("htmlparser2"); const parser = new htmlparser.Parser({ onopentag: (name, attrib) => { if (name=='p') console.log('a paragraph element is opening'); } }, {decodeEntities: true}); parser.write(`<!DOCTYPE html><p>Hello world</p>`); parser.end(); // console output: 'a paragraph element is opening'
-
cheerio
による HTML DOM 解析に基づく jQuery の実装です。htmlparser2
:const cheerio = require('cheerio'); const $ = cheerio.load(`<!DOCTYPE html><p>Hello world</p>`); $('p').text('Bye moon'); $.html(); // '<!DOCTYPE html><p>Bye moon</p>'
-
xmldom
: DOM レベル 2 を完全に実装し、DOM レベル 3 を部分的に実装しています。HTML と XML で動作する。 -
dom-parser
のようないくつかの DOM メソッドを実装した、正規表現に基づいた DOM パーサーです。getElementById
. 正規表現でHTMLを解析するのは は非常に悪い考えです。 これは本番ではお勧めしません。
関連
-
[解決済み】ある要素が可視DOMに存在するかどうかを確認するにはどうすればいいですか?
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] package.jsonのチルダ(~)とキャレット(^)の違いは何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Facebook Graph API のクエリで with=location を使用すると "Uncaught (in promise) undefined" というエラーが発生する。
-
[解決済み】webpack: モジュールが見つかりません。Error: 解決できない(相対パスで)
-
[解決済み】JavaScriptのgetElementByNameが機能しない
-
[解決済み】コンソールがUnterminated JSX contentsエラーを投げる【終了しました
-
[解決済み】Uncaught ReferenceError。Reactが定義されていない
-
[解決済み] エラー。モジュールhtmlが見つからない
-
[解決済み】Reactのeslintエラーはpropsの検証で見つからない
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】TypeError:res.jsonは関数ではありません。
-
[解決済み】 \u003C とは何ですか?