目次
質問内容
回避策
ホームページ Java 無効な (エラー/不正な) XML を解析するにはどうすればよいですか?

無効な (エラー/不正な) XML を解析するにはどうすればよいですか?

Feb 09, 2024 pm 11:20 PM
overflow

php エディタ Baicao は、無効な XML ファイルを解析する方法を紹介します。 XML ファイルを処理するときに、おそらく形式が整っていないかエラーが含まれているために、無効な XML が発生することがあります。無効な XML ファイルの解析は、必要なデータを確実に正しく取得するために重要なタスクです。この問題を解決するには、PHP の組み込み関数とライブラリを使用して、無効な XML をチェックして修正します。以下では、無効な XML ファイルを解析するために一般的に使用されるいくつかの方法を詳しく紹介します。

質問内容

現在、他の製品から受け取った XML を解析する機能に取り組んでいます。実際の顧客データに対していくつかのテストを実行することにしましたが、他の製品では無効と見なされるべき入力をユーザーが入力できるようです。とにかく、それを解析する方法を見つけ出す必要があります。 javax.xml.parsers.documentbuilder を使用していますが、入力中に次のエラーが発生します。

リーリー

ご存知のとおり、説明に無効なタグ (<this-is-part-of-description>) が含まれているようです。現在、この description タグはリーフ タグとみなされ、内部にネストされたタグを含めることはできません。いずれにしても、これは依然として問題であり、documentbuilder.parse(...)

で例外が発生します。

これが無効な XML であることはわかっていますが、予想通り無効です。そのような入力を解析する方法について何かアイデアはありますか?

回避策

"xml" は invalid よりも悪いです - 整形式ではありません ; # を参照してください。整形式で有効な xml

違反の予測可能性に関する非公式の評価は役に立ちません。テキストデータはxmlではありません。これに対処するのに役立つ、一貫性のある XML ツールやライブラリはありません。

オプション、最初に理想的なもの:

  1. プロバイダー自身に問題を解決してもらいます。

    整形式の XML が必要です。 (技術的には、整形式 xml という用語は冗長ですが、強調すると役立つかもしれません。)

  2. 寛容なタグ パーサーを使用する

    xml に解析する前に問題を修正してください:

  3. 使用文本编辑器手动将数据处理为文本或 以编程方式使用字符/字符串函数。这样做 以编程方式可以从棘手到不可能作为 看起来是什么 可预测的往往不是——打破规则很少受到规则的约束

    • 对于无效字符错误,请使用正则表达式删除/替换无效字符:

      • php: preg_replace('/[^\x{0009}\x{000a}\x{000d} \x{0020}-\x{d7ff}\x{e000}-\x{fffd}]+/u', ' ', $s);
      • ruby: string.tr ("^\u{0009}\u{000a}\u{000d}\u{0020}-\u{d7ff}\u{e000‌​}-\u{fffd}", ' ')
      • javascript: inputstr.replace (/[^\x09\x0a\x0d\x20-\xff\x85\xa0-\ud7ff\ue000-\ufdcf\ufde0-\ufffd]/gm, '')
    • 对于与号,使用正则表达式将匹配项替换为 &amp;: 信用:blhsin演示 p>

      &amp;(?!(?:#\d+|#x[0-9a-f]+|\w+);)
      ログイン後にコピー

请注意,上述正则表达式不会接受注释或 cdata

按照设计,标准 xml 解析器永远不会接受无效的 xml。

您唯一的选择是在解析输入之前预处理输入以删除“可预见的无效”内容,或将其包装在 cdata 中。

以上が無効な (エラー/不正な) XML を解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

2009 年から 2025 年の誕生以来のビットコインの価格 BTC 過去の価格の最も完全な概要 2009 年から 2025 年の誕生以来のビットコインの価格 BTC 過去の価格の最も完全な概要 Jan 15, 2025 pm 08:11 PM

2009 年の誕生以来、ビットコインは暗号通貨の世界のリーダーとなり、その価格は大きな変動を経験しました。包括的な歴史的概要を提供するために、この記事では 2009 年から 2025 年までのビットコイン価格データをまとめ、主要な市場イベント、市場センチメントの変化、価格変動に影響を与える重要な要因を取り上げます。

Windows 11 の右下隅で時間がなくなった場合の対処方法_Windows 11 の右下隅で時間がなくなった場合の対処方法 Windows 11 の右下隅で時間がなくなった場合の対処方法_Windows 11 の右下隅で時間がなくなった場合の対処方法 May 06, 2024 pm 01:20 PM

1. まず、Windows 11の下部にあるタスクバーの空白部分を右クリックし、[タスクバーの設定]を選択します。 2. タスクバー設定の右側にある [taskbarcorneroverflow] を見つけます。 3. 次に、その上にある [時計] または [時計] を見つけて選択し、オンにします。方法 2: 1. キーボード ショートカット [win+r] を押して [ファイル名を指定して実行] を呼び出し、[regedit] と入力して Enter キーを押して確定します。 2. レジストリエディタを開き、その中にある[HKEY_CURRENT_USERControlPanel]を見つけて削除します。 3. 削除後、コンピュータを再起動すると、システムに戻ると、設定を求めるプロンプトが表示されます。

Java 関数について質問したり議論したりできるコミュニティ フォーラムやディスカッション グループはありますか? Java 関数について質問したり議論したりできるコミュニティ フォーラムやディスカッション グループはありますか? Apr 28, 2024 pm 02:12 PM

回答: Java 関数型プログラミングの質問には、次のコミュニティ フォーラムおよびディスカッション グループが利用できます。 StackOverflow: Java 関数型プログラミングの専門家のコミュニティを備えた世界最大のプログラミング Q&A Web サイト。 JavaFunctionalProgramming: Java 関数型プログラミングに焦点を当てたコミュニティ フォーラムで、概念、言語機能、ベスト プラクティスについてのディスカッションを提供します。 Redditr/functionjava: Java の関数型プログラミングに焦点を当てたサブレディットで、ツール、ライブラリ、テクノロジに焦点を当てています。 Discord: JavaFunctional Programming: リアルタイムのディスカッション、コード共有、コラボレーションを提供する Discord サービス

Pythonで他の人のコードを使用する方法 Pythonで他の人のコードを使用する方法 May 05, 2024 pm 07:54 PM

他の人の Python コードを使用するにはどうすればよいですか?コード リポジトリを見つける: PyPI や GitHub などのプラットフォームで必要なコードを見つけます。インストール コード: pip を使用するか、GitHub リポジトリのクローンを作成してインストールします。モジュールのインポート: スクリプト内で import ステートメントを使用して、インストールされているモジュールをインポートします。コードの操作: モジュール内の関数とクラスにアクセスします。 (オプション) コードを調整する: プロジェクトに合わせて必要に応じてコードを変更します。

win11 コンピューターの時刻が常に間違っている場合はどうすればよいですか? Windows 11コンピュータで間違った時刻を調整する方法 win11 コンピューターの時刻が常に間違っている場合はどうすればよいですか? Windows 11コンピュータで間違った時刻を調整する方法 May 03, 2024 pm 09:20 PM

win11 コンピューターの時刻が常に間違っている場合はどうすればよいですか? win11 システムを使用するとき、誰もが時刻やカレンダーを設定しますが、多くのユーザーはコンピューターの時刻が常に間違っていると尋ねます。何が起こっているのでしょうか?ユーザーは下のタスクバーを直接クリックし、taskbarcorneroverflow を見つけてセットアップできます。このサイトでは、Win11 コンピューターの時刻誤差を調整する方法を詳しく紹介します。 Windows 11 でコンピューターの時刻エラーを調整する方法。方法 1: 1. まず、下のタスクバーの空白スペースを右クリックし、[タスクバーの設定] を選択します。方法 2: 1. キーボード ショートカット win+r を押して「ファイル名を指定して実行」を呼び出し、「regedit」と入力して Enter キーを押して確認します。

Java関数開発における一般的な例外の種類とその修復方法 Java関数開発における一般的な例外の種類とその修復方法 May 03, 2024 pm 02:09 PM

Java 関数開発における一般的な例外の種類とその修復方法 Java 関数の開発中に、関数の正しい実行に影響を与えるさまざまな例外が発生する可能性があります。一般的な例外の種類とその修復方法は次のとおりです。 1. NullPointerException 説明: 初期化されていないオブジェクトにアクセスするとスローされます。修正: オブジェクトを使用する前に、オブジェクトが null でないことを確認してください。サンプル コード: try{Stringname=null;System.out.println(name.length());}catch(NullPointerExceptione){

CSSでのオーバーフローとはどういう意味ですか CSSでのオーバーフローとはどういう意味ですか Apr 28, 2024 pm 03:15 PM

オーバーフローは、要素コンテンツがコンテナを超えた場合の表示モードを制御するために使用される CSS のプロパティです。 使用可能な値には、次のものが含まれます。オーバーフローコンテンツを表示するためにスクロールバーが表示されます auto: スクロールバーを表示するかどうかはブラウザが自動的に決定します accept: 親要素のオーバーフロー属性を継承します

Douyin のランダムなアカウントを管理する人はいませんか?二度目の異議申し立てはできますか? Douyin のランダムなアカウントを管理する人はいませんか?二度目の異議申し立てはできますか? May 03, 2024 am 09:37 AM

世界的に有名なショートビデオプラットフォームとして、Douyin には巨大なユーザーベースとコンテンツクリエイターがいます。ただし、プラットフォームのルールは常に更新および改善されているため、一部のユーザーはアカウント禁止に遭遇する可能性があります。これにより、プラットフォーム管理の透明性と公平性について世間の疑問が生じています。この記事では、Douyin アカウントの禁止の問題と、アカウントが禁止された後にユーザーに異議を申し立てる方法があるかどうかについて説明します。 Douyin プラットフォームで禁止される理由は数多くあります。これには、違法なコンテンツ、プラットフォーム規制の違反、他人の権利の侵害などが含まれますが、これらに限定されません。プラットフォームの秩序とユーザーの利益を維持するために、Douyin は一連のルールとレビューメカニズムを確立しました。一部のユーザーがルールに違反した場合、そのアカウントは禁止される場合があります。ただし、一部のユーザーは禁止の理由に疑問を抱いたり、不満を抱いたりする可能性があります。