問題タブ [sax]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
6626 参照

java - 無効な文字を無視するように SAX パーサーに指示しますか?

SAX は、次の例外で停止し続けます。

問題は、ほとんど正しく UTF-8 でエンコードされていることですが、いくつかのエラーがあります。ファイルの新しいバージョンを取得できません。このファイルを使用する必要があります。

では、SAX に無効な文字シーケンスを無視するように、または UTF-8 ファイルをクリーンアップして無効な UTF-8 シーケンスが含まれないようにするにはどうすればよいでしょうか。

0 投票する
1 に答える
2973 参照

java - デフォルトのsaxパーサーを使用すると、巧妙に細工されたxmlによってjaxb unmarshalが悪用されますか?

したがって、現在のプロジェクトでは、JAXB RI を Sun の JRE (Xerces だと思います) のデフォルトの Java パーサーで使用して、任意の XML を非整列化します。

まず、XJC を使用して次の形式の XSD をコンパイルします。

「良いケース」では、すべてが設計どおりに機能します。つまり、このスキーマに準拠する XML が渡された場合、JAXB はそれをオブジェクト ツリーに正しく非整列化します。

問題は、外部DTD参照を含むXMLを渡されたときに発生します。

このようなものをアンマーシャリングすると、SAX パーサーはリモート エンティティ (" http://somehost/foobar.dtd ") をロードしようとしますが、このスニペットは以前に XJC でコンパイルしたスキーマに明らかに準拠していません。

この動作を回避するには、適合する XML (コンパイルした XSD によると) がリモート エンティティの読み込みを必要としないことを知っているため、すべてのリモート エンティティの読み込みを回避するカスタム EntityResolver を定義する必要があります。したがって、次のようなことをする代わりに:

私はこれを行うことを余儀なくされています:

だから私の究極の質問は:

JAXB でアンマーシャリングする場合、問題の XML がそれらのリモート エンティティをロードせずに無効であると認識できる場合、基礎となる SAX パーサーによるリモート エンティティのロードを自動的に短絡する必要がありますか?

また、これはセキュリティ上の問題のように思えませんか? JAX-WS が内部で JAXB に依存していることを考えると、特別に細工された XML を任意の JAX-WS ベースの Web サービスに渡し、WS ホストに任意の URL をロードさせることができるようです。

私はこれに比較的初心者なので、おそらく何かが欠けている可能性があります。もしそうなら教えてください!

0 投票する
2 に答える
2076 参照

xml - Perl XML: SAX 解析エラー -> 属性値が印刷されない

XML::SAX parserを使用して Perl で XML を解析しようとしています。私の質問は、属性値の生成に関するものです。現在、タグ要素内に存在する値のみを生成できますが、私の目標は生成することです:

これが私のものbooks1.xsdです:

ここに私のサンプルがありますBooks.xml:

これが私のparser.plファイルです:

これが私のMyHandler.pmモジュールです:

0 投票する
2 に答える
3505 参照

xml - どうすればXMLデータを解析し、Perlを使用してMySQLデータベースに挿入できますか?

これが私が達成しようとしていることです:

広い意味では、SAXパーサーを使用してXMLデータを解析し、MySQLテーブルの適切なデータベース列に挿入します。

これがサンプルですBooks.xml

SAXパーサーを使用するPerlスクリプト:

SAXパーサーハンドラーモジュールMySaxHandler.pm

手順:

  1. XML::SAXパーサーを使用してXMLを解析する
  2. XML内のノードごとに、子ノードがある場合はそれをトラバースし、リーフノードに到達したら、そのノード値をデータベーステーブルの列に挿入するための挿入ステートメントを動的に生成します。たとえば、XMLリーフノードがpriceあり、その親ノードがであるoffer場合、Perlスクリプトはデータベースのテーブルの列にpriceノードの値を挿入する必要があります。priceoffer
  3. 多くのノードを持つ大きなXMLファイルがあり、各ノードには多くの子ノードと孫ノードがあります。

質問:

  1. for. E.g. price value should go into offer table's price columnSAXパーサーを使用してXMLを解析しているときに、books.xmlの要素タグの値を適切なMySQLデータベース列に挿入するにはどうすればよいですか?

    OR

  2. どうすればすべての挿入を生成できますか?すべての挿入ステートメントを取得したら、MySQLデータベースに接続してそれらをダンプするだけですか?

トリッキーな部分:

トリッキーな部分は、相互依存性のあるデータがいくつかあることです。たとえばpriceoffer親ノードのノードもノードに関連してdefault priceいるため、挿入ステートメントを生成する際には、値がデータベースに適切に挿入されることに注意する必要がありますが、MySQLのInnoDBテーブルを使用することは許可されていませんが、許可されている唯一のエンジンです。使用はMyISAMです。

これらの問題を回避するためにPerlで可能な提案は何ですか?

0 投票する
2 に答える
1218 参照

xml - SAXを使用してXMLファイルを解析する際に、要素の値に相当するモジュールのオブジェクトを作成するにはどうすればよいですか?

Author.pm、BillingPeriod.pm、Offer.pm、PaymentMethod.pm などのさまざまなモジュールがあり、要素の値に相当するモジュールのオブジェクトを作成したい終了要素タグをヒットするたびに、sax に表示されます。

どうすればこれを達成できますか?

たとえば、XML ファイルを解析して sax パーサーが end 要素をヒットした場合は、Offer.pm のオブジェクトを作成する必要があります。同様に、sax パーサーが end 要素タグをヒットした場合は、Author.pm のオブジェクトを作成する必要があります。

コード

XML:books.xml

サックス:perlsaxparsing.pl

例えば以下の例では、サックスが打っていると仮定してOffer end element tagオブジェクトを作成しています。Offer.pm

モジュールのオブジェクトを作成したいのですが、たとえばOffer.pmこの場合、sax が Offer 要素タグの end 要素にヒットしたときなどです。

SAX パーサー ハンドラー モジュール:MySaxHander.pm

質問: SAX を使用して XML ファイルを解析しているときに、要素 value に相当するモジュールのオブジェクトを作成するにはどうすればよいですか?

0 投票する
2 に答える
861 参照

java - XSD で XML ファイルを検証中にエラーが発生しました

私は xml ファイルを持っています。それを test.xml と呼びましょう。検証用のスキーマ (schema.xsd) があります。TomCat の最新バージョンも使用しています。
次のエラーの原因は何かと考えていました:

エラー: URI=file:///C:/../Upload/test.xml Line=2: ドキュメントが無効です: 文法が見つかりません。
エラー: URI=file:///C:/../Upload/test.xml 行 = 2: ドキュメント ルート要素 "TEST_ROOT"、DOCTYPE ルート "null" と一致する必要があります。

敬具

0 投票する
3 に答える
6612 参照

xml - Perlで大きなXMLファイルを解析するにはどうすればよいですか?

次のコードのようにXMLデータを読み取ると、メモリ内にDOMツリーが作成されますか?

大きなXMLファイルの場合、ハンドラーなどを使用してSAXパーサーを使用する必要がありますか?

0 投票する
13 に答える
30134 参照

java - SAXモデル用のXPathプロセッサはありますか?

ドキュメントのノードを探すために DOM ドキュメント全体を再構築しない XPath エバリュエーターを探しています。メモリ管理に適しており、ノードを検索する可能性を提供します。

応援ありがとうございました!

不可能だと言うすべての人のために: 私は最近、質問をした後、「saxpath」( http://www.saxpath.org/ ) という名前のプロジェクトを見つけましたが、実装プロジェクトが見つかりません。