問題タブ [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.
java - 無効な文字を無視するように SAX パーサーに指示しますか?
SAX は、次の例外で停止し続けます。
問題は、ほとんど正しく UTF-8 でエンコードされていることですが、いくつかのエラーがあります。ファイルの新しいバージョンを取得できません。このファイルを使用する必要があります。
では、SAX に無効な文字シーケンスを無視するように、または UTF-8 ファイルをクリーンアップして無効な UTF-8 シーケンスが含まれないようにするにはどうすればよいでしょうか。
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 をロードさせることができるようです。
私はこれに比較的初心者なので、おそらく何かが欠けている可能性があります。もしそうなら教えてください!
xml - Perl XML: SAX 解析エラー -> 属性値が印刷されない
XML::SAX parserを使用して Perl で XML を解析しようとしています。私の質問は、属性値の生成に関するものです。現在、タグ要素内に存在する値のみを生成できますが、私の目標は生成することです:
これが私のものbooks1.xsd
です:
ここに私のサンプルがありますBooks.xml
:
これが私のparser.pl
ファイルです:
これが私のMyHandler.pm
モジュールです:
xml - どうすればXMLデータを解析し、Perlを使用してMySQLデータベースに挿入できますか?
これが私が達成しようとしていることです:
広い意味では、SAXパーサーを使用してXMLデータを解析し、MySQLテーブルの適切なデータベース列に挿入します。
これがサンプルですBooks.xml
SAXパーサーを使用するPerlスクリプト:
SAXパーサーハンドラーモジュールMySaxHandler.pm
:
手順:
- XML::SAXパーサーを使用してXMLを解析する
- XML内のノードごとに、子ノードがある場合はそれをトラバースし、リーフノードに到達したら、そのノード値をデータベーステーブルの列に挿入するための挿入ステートメントを動的に生成します。たとえば、XMLリーフノードが
price
あり、その親ノードがであるoffer
場合、Perlスクリプトはデータベースのテーブルの列にprice
ノードの値を挿入する必要があります。price
offer
- 多くのノードを持つ大きなXMLファイルがあり、各ノードには多くの子ノードと孫ノードがあります。
質問:
for. E.g. price value should go into offer table's price column
SAXパーサーを使用してXMLを解析しているときに、books.xmlの要素タグの値を適切なMySQLデータベース列に挿入するにはどうすればよいですか?OR
どうすればすべての挿入を生成できますか?すべての挿入ステートメントを取得したら、MySQLデータベースに接続してそれらをダンプするだけですか?
トリッキーな部分:
トリッキーな部分は、相互依存性のあるデータがいくつかあることです。たとえばprice
、offer
親ノードのノードもノードに関連してdefault price
いるため、挿入ステートメントを生成する際には、値がデータベースに適切に挿入されることに注意する必要がありますが、MySQLのInnoDBテーブルを使用することは許可されていませんが、許可されている唯一のエンジンです。使用はMyISAMです。
これらの問題を回避するためにPerlで可能な提案は何ですか?
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 に相当するモジュールのオブジェクトを作成するにはどうすればよいですか?
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" と一致する必要があります。
敬具
xml - Perlで大きなXMLファイルを解析するにはどうすればよいですか?
次のコードのようにXMLデータを読み取ると、メモリ内にDOMツリーが作成されますか?
大きなXMLファイルの場合、ハンドラーなどを使用してSAXパーサーを使用する必要がありますか?
java - SAXモデル用のXPathプロセッサはありますか?
ドキュメントのノードを探すために DOM ドキュメント全体を再構築しない XPath エバリュエーターを探しています。メモリ管理に適しており、ノードを検索する可能性を提供します。
応援ありがとうございました!
不可能だと言うすべての人のために: 私は最近、質問をした後、「saxpath」( http://www.saxpath.org/ ) という名前のプロジェクトを見つけましたが、実装プロジェクトが見つかりません。