問題タブ [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 投票する
4 に答える
839 参照

java - Java XML 解析

ドキュメントを次のように変換する最も簡単な方法は何ですか:

@ を含む要素が親要素の属性になるようにします。

つまり、次のようになります。

ドムを使う?またはSaxパーサーまたは手動?@ を <> に移動できます

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

java - JavaでSAXParseExceptionを効果的に使用する方法

Java で XMLSchema に対して検証を行っていますが、無効なコンテンツ モデルがあると SAXParseExceptions がスローされます。

これらの例外を使用して、検証が失敗した場所を強調しますが、SAXParseExceptions は少しレベルが低すぎるようです。

たとえば、列挙の失敗の場合、提供された値が 1 つの例外でコンテンツ モデルと一致せず、次の例外でそれが適用される要素と一致しないという有効性エラーが発生します。

関連するエラーをまとめてマージし、例外テキストを使用可能な例外プロパティに解析するために、少し抽象化するユーティリティが必要だと考えています。

これは合理的なアプローチですか、それとも何か不足しているだけですか、それともライブラリまたはヘルパー クラスですか?


@timgilbert を更新してください。返信ありがとうございます。

たとえば、インターネットで見つけた SAXParseException

私にとって重要なことは

  • この例外が適用される要素「en」。exception.getElement() などを呼び出せないのはなぜですか? また、問題の要素への XPath を呼び出せないのはなぜですか? 行番号と列番号よりもメモリ内ドキュメントの方が便利です!
  • パターン検証の失敗です。考えられる失敗の種類の列挙と適切な失敗への参照のようなものを取得できないのはなぜですか?
  • 検証が失敗した実際のパターン。
  • 次に別の例外がスローされ、マージする必要がある問題の原因となった「en」要素の値が通知されます

私ができるようにしたいことの例は、人々にドキュメントを送信してもらい、検証が失敗した場所でユーザーフレンドリーなメッセージでドキュメントを強調表示することです-上記のエラーメッセージはあまりフレンドリーではないようです...解析する必要があります一重引用符で囲むと、事故が起こるのを待っているように感じます:)

「要素への参照」のやり方が間違っているのではないかと思います。おそらく、検証の一部としてデフォルトでドキュメントのアイデンティティ変換を行い、検証エラー属性で変換を強化する必要がありますCSSで抽出できます。メッセージをより使いやすくするためにメッセージを解析する必要がある場合、それでも役に立ちません...

Re: タイト バインディング、javax.xml.validation.Validator.validate() はとにかく org.xml.sax.SAXException をスローします。

乾杯

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

java - 解析プロセス中に SAX パーサーが読み取っているストリームを閉じる最良の方法は?

私の質問に直行しましょう: 私はソケットを持っており、このソケット/ストリームを経由するすべての入力は SAX パーサーによって解析されます。ここで、特定の解析イベントで、SAX イベント ハンドラー内からソケット/ストリームを閉じたいと思います。また、パーサーがまだ動作している間に、特定のケースで外部からストリームを閉じたい。残念ながら、パーサーによって例外がスローされることなく、どちらか一方を実行することはできません (予期しないドキュメントの終了...)。わかりました、この例外をキャッチできましたが、ストリームを安全に閉じる方法を知っていますか?

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

.net - .Netで同等のSAX

.NetにSAX(Java)に相当するものはありますか?XmlReaderを知っていますが、プッシュパーサーを探しています。

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

objective-c - cocoa iPhone sax xml 解析ルーチンからデータを抽出する方法

iPhone アプリで xml ドキュメントを読み込んで解析しようとしています。解析を開始してから、オーバーライド メソッドを使用します。

次に、属性を次のように文字列に変換しようとします。

attributes パラメータの前に ** が 2 つ付いているのはなぜですか。上記のコードでデータを抽出して文字列に変換しようとすると、次の警告が表示されるのはなぜですか。

'initWithCString:encoding:' の引数 1 を互換性のないポインター型から渡しています。

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

xml - J2ME のストリームから無効な XML 文字を削除するにはどうすればよいですか? org.xml.sax.SAXParseException: 無効な文字です

このコードは Blackberry JDE v4.2.1 で実行されています。XML を返す Web API 呼び出しを行うメソッド内にあります。返される XML の形式が正しくない場合があり、解析する前に無効な文字を取り除く必要があります。

現在、私は得る: org.xml.sax.SAXParseException: Invalid character '' encountered.

入力ストリームに無効な文字ストリッパーをアタッチして、ストリームがバリデーター/ストリッパーを通過して解析呼び出しに流れるようにするための迅速な方法のアイデアを見たいと思います。つまり、ストリームのコンテンツを保存しないようにしています。

既存のコード:

handlerDefaultHandler
urlのオーバーライドですAPI を含む文字列ですURL

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

java - Saxon 8 (Java 版) の問題

私は saxon を初めて使用することを指摘しておきます。パッケージ内のドキュメントと例に従ってみましたが、この問題にうまく対応できませんでした。

基本的に、saxon v8を使用してJavaでxml処理を実行しようとしています。何かを機能させるために、パッケージに含まれているサンプル ファイルの 1 つを使用して、必要に応じて変更しました。名前空間を使用していない限り機能します。それが私の質問です。名前空間の問題を回避するにはどうすればよいですか? 私は本当にそれを使用する気にはなりませんが、それは私の xml に存在するので、使用するか無視する必要があります。どちらのソリューションでも問題ありません。

とにかく、これが私のスターターコードです。それは何もしませんが、ハードコードされたxmlドキュメントに対してそれを使用しようとするxpathクエリを取ります。

XML ファイルの例はこちら...

名前空間を含むクエリでこれを実行すると、エラーが発生します。例: /ns1:animal/cat/「プレフィックス ns1 が宣言されていません」というエラーが表示されます。

クエリから ns1: を削除しても、何も得られません。「animal」の前に付けられた「ns1:」を削除するように xml を修正すると、クエリ/animal/cat/を正常に実行できます。

どんな助けでも大歓迎です。ありがとう。

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

xml - ブラックベリーのTransformerFactory?

XML作成にBlackBerryでTransformerFactoryを使用するにはどうすればよいですか?

JavaにはTransformerFactoryメソッドがあります。しかし、BalackBerryはそうではありません。

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

python - Python で sax パーサーのエンコーディングを設定する

utf-8 でエンコードされた xml を ExpatParser インスタンスにフィードすると、次のようになります。

...次のようになります。

私はおそらくここで明らかな何かを見逃しています。パーサーのエンコーディングを「ascii」から「utf-8」に変更するにはどうすればよいですか?

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

.net - MSXML2.SAXXMLReader.6.0は解析しません

.net FrameworkのXmlTextWriterを使用して、C#からいくつかのxmlを書き出しています。これは問題なく動作します。私が書き出す文字列の一部には、文字値5が含まれています(文字「5」を意味するのではなく、ASCII値5を意味することに注意してください)。

これで、xml仕様から、この文字がxmlで無効であることがわかりました。ただし、それが違法であるかどうかは関係ありません。xml(非準拠)ドキュメントに含める必要があります。これは、バイナリデータを含む可能性のある文字列をドキュメントに書き込むことができるようにするためです。

わかりました。System.Xml.XmlTextWriterはこれらの不正なxml文字を正常に書き込み、xmlにとしてエンコードし"&#5x;"ます。しかし、その後、MSXML2.SAXXMLReader.6.0を使用してC++アプリでそれらを読みたいと思います。このパーサーは、これらの文字の1つに遭遇すると、fatalErrorを発生させます。

パーサーのプロパティのいくつかを変更して、パーサーを機能させるようにしました。IEがこのパーサーを内部で使用していることは私の理解であり、IEokで不正なxmlをロードできます。それで、私ができないとき、IEはどのようにそれを解析することができますか。

私は何かが足りないのですか?IEは別のパーサーを使用しますか?MSXML2.SAXXMLReader.6.0パーサーを機能させる方法はありますか?別のパーサーを使用する必要がありますか(もしそうなら、ソースコードが利用できるパーサーをお勧めします。そうすれば、希望どおりに機能しない場合に修正できます)。

これらの不正な文字を解析できるようにするために、.Netパーサーに設定できるプロパティがあります。SAXパーサーでC++から使用できる同等のものを探していると思います。 http://msdn.microsoft.com/en-us/library/system.xml.xmlwritersettings.checkcharacters.aspx

どうもありがとう、-
スコット

CDATAセクションでこの文字をエンコードできるとは思わない。ここを参照してください:http: //msdn.microsoft.com/en-us/library/ms256076
(VS.85).aspx そして、たとえそうだったとしても。CDATAセクションを使用したくないので、属性値に文字を使用したい。また、base64でエンコードできることもわかっていますが、それもやりたくありません...法律に違反したいので、違法なxmlを解析できるようにしたいのです。