[解決済み] 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は定義されていません。
編集してください。 私のjavascriptはnode.jsファイルであるため、HTMLページにないため、このリンクは私のために動作しませんでした。 JavaScript DOMParserのinnerHTMLとその他のプロパティへのアクセス
どのように解決するのですか?
DOM操作やXHRのような多くのブラウザの機能は、DOMにアクセスするための典型的なサーバータスクではないため、NodeJSネイティブでは利用できません。
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'
-
deno_dom
Node の代わりに Deno を使用することがオプションである場合、このライブラリは DOM パース機能を提供します。import { DOMParser } from "https://deno.land/x/deno_dom/deno-dom-wasm.ts"; const parser = new DOMParser(); const document = parser.parseFromString('<p>Hello world</p>', 'text/html'); document.querySelector('p').textContent; // 'Hello world';
-
htmlparser2
: jsdom と同じですが、より複雑な 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 level 2 を完全に実装し、DOM level 3 を部分的に実装しています。HTMLで動作し、XMLでも動作します。 -
dom-parser
のようないくつかの DOM メソッドを実装した、正規表現に基づく DOM パーサーです。getElementById
. 正規表現で HTML を解析するのは は非常に悪い考えです。 なので、制作にはお勧めしません。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] package.jsonのチルダ(~)とキャレット(^)の違いは何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] アサインの左側にJavascriptのオブジェクトブラケット表記({ ナビゲーション } =)があります。
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] JavaScript で範囲を作成する - 奇妙な構文
-
[解決済み] 文字列がすべて同じ部分文字列で構成されているかどうかを調べるにはどうすればよいですか?
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] Javascript 空の配列の削減
-
[解決済み] Chromeの拡張機能開発にWebStormを使用するにはどうすればよいですか?
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
-
[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
-
[解決済み] <ng-content>が空かどうかを確認する方法は?(これまでのAngular 2+で)