GAEで完全に有効なXMLを解析すると、「コンテンツはプロローグで許可されません」

エイドリアン・ペトレスク:

私は過去48時間、この非常に腹立たしいバグに頭を殴っていたので、ラップトップを窓から投げ出す前に、ようやくタオルを投げ入れて、ここで聞いてみようと思いました。

AWS SimpleDBに対して行った呼び出しからの応答XMLを解析しようとしています。応答は問題なく戻ってきます。たとえば、次のようになります。

<?xml version="1.0" encoding="utf-8"?> 
<ListDomainsResponse xmlns="http://sdb.amazonaws.com/doc/2009-04-15/">
    <ListDomainsResult>
        <DomainName>Audio</DomainName>
        <DomainName>Course</DomainName>
        <DomainName>DocumentContents</DomainName>
        <DomainName>LectureSet</DomainName>
        <DomainName>MetaData</DomainName>
        <DomainName>Professors</DomainName>
        <DomainName>Tag</DomainName>
    </ListDomainsResult>
    <ResponseMetadata>
        <RequestId>42330b4a-e134-6aec-e62a-5869ac2b4575</RequestId>
        <BoxUsage>0.0000071759</BoxUsage>
    </ResponseMetadata>
</ListDomainsResponse>

このXMLをパーサーに渡します

XMLEventReader eventReader = xmlInputFactory.createXMLEventReader(response.getContent());

eventReader.nextEvent();何度も呼び出して、必要なデータを取得します。

ここに奇妙な部分があります-ローカルサーバー内でうまく機能します。返事が来て、私はそれを解析して、みんな幸せです。問題は、コードをGoogle App Engineにデプロイしても、送信リクエストは引き続き機能し、応答XMLは100%同一で正しいように見えますが、次の例外で応答の解析に失敗します。

com.amazonaws.http.HttpClient handleResponse: Unable to unmarshall response (ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.): <?xml version="1.0" encoding="utf-8"?> 
<ListDomainsResponse xmlns="http://sdb.amazonaws.com/doc/2009-04-15/"><ListDomainsResult><DomainName>Audio</DomainName><DomainName>Course</DomainName><DomainName>DocumentContents</DomainName><DomainName>LectureSet</DomainName><DomainName>MetaData</DomainName><DomainName>Professors</DomainName><DomainName>Tag</DomainName></ListDomainsResult><ResponseMetadata><RequestId>42330b4a-e134-6aec-e62a-5869ac2b4575</RequestId><BoxUsage>0.0000071759</BoxUsage></ResponseMetadata></ListDomainsResponse>
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.
    at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(Unknown Source)
    at com.sun.xml.internal.stream.XMLEventReaderImpl.nextEvent(Unknown Source)
    at com.amazonaws.transform.StaxUnmarshallerContext.nextEvent(StaxUnmarshallerContext.java:153)
    ... (rest of lines omitted)

私はこのXMLの「見えない文字」や非UTF8エンコード文字などを二重、三重、四重にチェックしました。バイトオーダーマークまたはそのような性質の配列でバイトごとに調べました。何も; それは私がそれに投げかけることができるすべての検証テストに合格します。さらに奇妙なことに、Saxonベースのパーサーも使用すると発生しますが、GAEでのみ、ローカル環境で常に正常に動作します。

完全に動作する環境でしかデバッガーを実行できない場合、問題のコードを追跡するのが非常に困難になります(GAEでリモートでデバッグするための適切な方法が見つかりません)。それにもかかわらず、私が持っている原始的な手段を使用して、私は以下を含む百万のアプローチを試みました:

  • プロローグあり/なしのXML
  • 改行ありとなし
  • プロローグの "encoding ="属性の有無
  • 両方の改行スタイル
  • HTTPストリームにチャンク情報が存在する場合と存在しない場合

そして、私はこれらのほとんどを、それらが相互作用することが理にかなっている複数の組み合わせで試しました-何も!私は私の機知の終わりにいます。誰かがこの問題を以前に見たことがありますか?

ありがとう!

ロマンヒッポー:

XMLとXSD(またはDTD)のエンコーディングは異なります。
XMLファイルヘッダー:<?xml version='1.0' encoding='utf-8'?>
XSDファイルヘッダー:<?xml version='1.0' encoding='utf-16'?>

これを引き起こすもう1つの考えられるシナリオは、XML文書型宣言の前に何かが来る場合です。つまり、バッファに次のようなものがあるかもしれません:

helloworld<?xml version="1.0" encoding="utf-8"?>  

またはスペースや特殊文字。

バッファにある可能性のあるバイトオーダーマーカーと呼ばれるいくつかの特殊文字があります。バッファをパーサーに渡す前に、これを行ってください...

String xml = "<?xml ...";
xml = xml.trim().replaceFirst("^([\\W]+)<","<");

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

org.xml.sax.SAXParseException:.netでサービスを使用する場合、コンテンツはプロローグで許可されません

分類Dev

コンテンツはプロローグでは許可されていません - json の解析

分類Dev

org.xml.sax.SAXParseException:コンテンツはプロローグでは許可されていません

分類Dev

XMLコンテンツはプロローグでは許可されていません

分類Dev

XMLコンテンツはプロローグでは許可されていません

分類Dev

Javaで実行している場合、プロローグでコンテンツを取得することは許可されていません

分類Dev

「コンテンツはプロローグで許可されていません」エラーはまだXML宣言の前に何もありません

分類Dev

PDFファイルのプロローグエラーでコンテンツを解決する方法は許可されていませんか?

分類Dev

致命的なエラー:1:1:コンテンツはプロローグで許可されていません。org.xml.sax.SAXParseException

分類Dev

Java Xercesでのロギングを無効にします(「[致命的エラー]:1:1:コンテンツはプロローグでは許可されていません。」)

分類Dev

Intellijコンテンツはプロローグでは許可されていません

分類Dev

GroovyXmlSlurperコンテンツはプロローグでは許可されていません

分類Dev

1行目のエラー:コンテンツはプロローグで許可されていません

分類Dev

エラー:コンテンツはプロローグで許可されていません

分類Dev

組み込みのAndroidStudioアプリを使用しても、AndroidStudioで「コンテンツはプロローグで許可されていません」というエラーが常に表示されます

分類Dev

致命的なエラー:1:1:コンテンツはプロローグでは許可されていません

分類Dev

プロジェクトを変換できません:C:\ workspace_IntelliJ \ Main \ new-webapp \ .idea \ workspace.xml:1行目のエラー:コンテンツはプロローグで許可されていません

分類Dev

Maven jmeterプラグイン:SAXParseException:コンテンツはプロローグで許可されていません

分類Dev

AndroidStudioのコンパイルエラー「コンテンツはプロローグで許可されていません」

分類Dev

maven:メタデータプロジェクトのインストールに失敗しましたメタデータを解析できませんでしたmaven-metadata-local.xml:開始タグの前に許可される空白コンテンツのみ

分類Dev

IntelliJ Idea 2017 : SpringBoot テスト ケースの問題 : コンテンツはプロローグで許可されていません

分類Dev

フォーム送信エラー:コンテンツはプロローグで許可されていません

分類Dev

PythonTwilioエラー-コンテンツはプロローグで許可されていません。スキーマ検証の警告

分類Dev

PythonTwilioエラー-コンテンツはプロローグで許可されていません。スキーマ検証の警告

分類Dev

プログラムをコンパイルすると、エラー 'void'タイプがここでは許可されません

分類Dev

WSO2 ESBコンテンツは、OutSecuenceのプロローグ例外では許可されていません

分類Dev

ジャージーはMOXyでオブジェクトをアンマーシャリングできません(コンテンツはプロローグで許可されていません)

分類Dev

Gradleビルド中のプロローグでのコンテンツの使用は許可されていません

分類Dev

「メソッドは許可されていません」エラーでフラスコにシステムにログインするだけです

Related 関連記事

  1. 1

    org.xml.sax.SAXParseException:.netでサービスを使用する場合、コンテンツはプロローグで許可されません

  2. 2

    コンテンツはプロローグでは許可されていません - json の解析

  3. 3

    org.xml.sax.SAXParseException:コンテンツはプロローグでは許可されていません

  4. 4

    XMLコンテンツはプロローグでは許可されていません

  5. 5

    XMLコンテンツはプロローグでは許可されていません

  6. 6

    Javaで実行している場合、プロローグでコンテンツを取得することは許可されていません

  7. 7

    「コンテンツはプロローグで許可されていません」エラーはまだXML宣言の前に何もありません

  8. 8

    PDFファイルのプロローグエラーでコンテンツを解決する方法は許可されていませんか?

  9. 9

    致命的なエラー:1:1:コンテンツはプロローグで許可されていません。org.xml.sax.SAXParseException

  10. 10

    Java Xercesでのロギングを無効にします(「[致命的エラー]:1:1:コンテンツはプロローグでは許可されていません。」)

  11. 11

    Intellijコンテンツはプロローグでは許可されていません

  12. 12

    GroovyXmlSlurperコンテンツはプロローグでは許可されていません

  13. 13

    1行目のエラー:コンテンツはプロローグで許可されていません

  14. 14

    エラー:コンテンツはプロローグで許可されていません

  15. 15

    組み込みのAndroidStudioアプリを使用しても、AndroidStudioで「コンテンツはプロローグで許可されていません」というエラーが常に表示されます

  16. 16

    致命的なエラー:1:1:コンテンツはプロローグでは許可されていません

  17. 17

    プロジェクトを変換できません:C:\ workspace_IntelliJ \ Main \ new-webapp \ .idea \ workspace.xml:1行目のエラー:コンテンツはプロローグで許可されていません

  18. 18

    Maven jmeterプラグイン:SAXParseException:コンテンツはプロローグで許可されていません

  19. 19

    AndroidStudioのコンパイルエラー「コンテンツはプロローグで許可されていません」

  20. 20

    maven:メタデータプロジェクトのインストールに失敗しましたメタデータを解析できませんでしたmaven-metadata-local.xml:開始タグの前に許可される空白コンテンツのみ

  21. 21

    IntelliJ Idea 2017 : SpringBoot テスト ケースの問題 : コンテンツはプロローグで許可されていません

  22. 22

    フォーム送信エラー:コンテンツはプロローグで許可されていません

  23. 23

    PythonTwilioエラー-コンテンツはプロローグで許可されていません。スキーマ検証の警告

  24. 24

    PythonTwilioエラー-コンテンツはプロローグで許可されていません。スキーマ検証の警告

  25. 25

    プログラムをコンパイルすると、エラー 'void'タイプがここでは許可されません

  26. 26

    WSO2 ESBコンテンツは、OutSecuenceのプロローグ例外では許可されていません

  27. 27

    ジャージーはMOXyでオブジェクトをアンマーシャリングできません(コンテンツはプロローグで許可されていません)

  28. 28

    Gradleビルド中のプロローグでのコンテンツの使用は許可されていません

  29. 29

    「メソッドは許可されていません」エラーでフラスコにシステムにログインするだけです

ホットタグ

アーカイブ