1. ホーム
  2. 例外事項

例外です。prolog-collectionではコンテンツが許可されていません。

2022-02-21 01:57:30

冒頭にコメントアウトし忘れた漢字が数行あったことがわかり、コメントアウトして問題は解決しました。
DOM4j が xml ファイルを読み込む際にエラーが発生する場合があるためです。コンテンツはプロローグで許可されていません
xmlはUTF-8でエンコードされており、Ultraeditで編集すると、BOMヘッダのないUTF-8ファイルにBOMが追加されますが、DOM4jはこのBOMを認識しません(dom4j1.3)、dom4jを1.6にアップグレードすれば解決します。 www.dom4j.org
BOMとは何ですか? http://www.unicode.org/faq/utf_bom.html#22

Unicodeの仕様には、BOM - Byte Order Markという概念があります。その中で ここで は、BOMの説明をご覧ください。

<ブロッククオート

UCSのエンコーディングには"ZERO WIDTH NO-BREAK SPACE"という文字があり、これはFEFFとエンコードされています。FFFEはUCSでは存在しない文字なので、実際の送信には現れません。UCS仕様では、バイトストリームを送信する前に"ZERO WIDTH NO-BREAK SPACE"の文字が送信できるよう推奨されています。NO-BREAK SPACE"です。こうすることで、受信者がFEFFを受信すれば、バイトストリームがビッグエンディアンであることを示し、FFFEを受信すれば、バイトストリームがリトルエンディアンであることを示す。このように、quot;ZERO WIDTH NO-BREAK SPACE"という文字は、BOMとも呼ばれます。

UTF-8では、バイトオーダーを示すBOMは必要ありませんが、エンコーディングのスタイルを示すためにBOMを使用することは可能です。文字 "ZERO WIDTH NO-BREAK SPACE" の UTF-8 エンコーディングは、EF BB BF です。したがって、受信者がEF BB BFで始まるバイトストリームを受信した場合、それがUTF-8でエンコードされていることが分かります。

このように、WindowsはBOMを使ってテキストファイルのエンコード方法をマークしているのです。

また、ユニコード・サイトの FAQ-BOM BOMの公式かつ自然な権威だが、英語なので読みにくい

eclipseでantを使ってjavaプロジェクトをビルドするという記事を見て、記事の指示に従って新しいプロジェクトを作成し、classes、dist、doc、libのためにいくつかの新しいフォルダとbuild.xmlファイルを作成しました。build.xmlファイルの内容もそのままコピーしたもので、Webページから直接コピーしたため、 "<" ">" がすべて中国語形式になっているので、これらを少し置き換えてみました。
         しかし、プロジェクトを選択し、"Project", "Properties", "Builders", "New...", select "Ant Build": "Bulidfile" ロード時に " と表示され、その後に、" Ant Build" を選択します。 prologにコンテンツは許可されていません エラーが発生しました。    
         その後、Googleでいろいろ調べてみたところ、運良く、build.xmlファイル形式のエラーかもしれないという小さな記事を読みました。

SGMLやXMLでは、文書は2つの連続した部分から構成されます。
HTMLの例で見ることができます。

<! DOCTYPE html PUBLIC "-/W3C//DTD XHTML 1.0 Transitional//EN "
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd "。 
> <スパン
< html  xmlns = "http://www.w3.org/1999/xhtml "。 <スパン >
< ヘッド  >
< タイトル  > 記号の接地問題  </ タイトル  >
</ ヘッド  >
< 本体  >
</ 本体  >
</ html  >

この例では、プロログは1-2行目、インスタンスの始まりは
3行目 このプロローグには、DOCTYPE宣言、外付けの
サブセット(DTDと呼ばれる)と、内部サブセット(これは滅多にないことだが
を参照してください(ただし合法です)。 ドキュメントインスタンスには、ドキュメント
要素(この場合 
<です。 html  >  およびその子孫のコンテンツすべて)。

一般的にプロローグは見たくありませんし、一般的にプロローグは見ません。
DOCTYPE 宣言は、以下の参照を提供します。
を検証するプロセスの一部としてインスタンス化されるDTDです。
リファレンスを保存したい場合もあるでしょうが、そのようなことはありません。
のように、ドキュメントを保存するたびにDTDを保存したい。
は本当にもったいないです(DTDはしばしば文書より大きいです)。

あなたの整形された有効なドキュメントが、'not being 'であるように聞こえます。
エラーメッセージは次のように表示されます。
にコンテンツ(要素または文字データ)があること。
文書のプロローグとされる部分が抜けている可能性があります。
上記2行目の最後の " > " は、通常であれば冒頭部分となるはずです。
もし、"が見つかったら。 
< html  "(またはそれに類するもの)。
そのエラーが出るかもしれません。
案の定、"!" が2つあるのは中国の状態なので、これを変えればOKです。
---------------------------------------------------------------------------------------------------------------------------------- -------------

UltraEditでHibernateマッピングファイルを書くとき、UltraEditがUTF8エンコードされたファイルの先頭に自動的に特殊文字を追加していることに気づきました。これはUltraEditでは見えませんが、他のエディタでは見ることができます。dom4jを使ってファイルをパースすると、content is not allowed in prologエラーが表示されます。このエラーは、他のエディタでこの文字を削除することで修正することができます。

別のxmlパーサーがあるはずです。utf-8ファイルヘッダは、xml規格にあるように、ユニコードに準拠しています。javaで書かれたxmlパーサーの中には、このヘッダーを認識しない悪いものがあります。しかし、優れたパーサーはこれを認識します。たとえば、apacheのパーサーはそうです。

------------------------------------------------------------------------------------------------------------------