SQLクエリ(<記号を含む)をxmlファイル内に配置し、Javaプログラムでそのクエリを読み取ろうとしています。しかし、それは例外を表示しています
"org.xml.sax.SAXParseException:要素のコンテンツは、整形式の文字データまたはマークアップで構成されている必要があります。"
上記の問題を解決する方法を教えてもらえますか?
XMLエンティティを使用してエスケープする必要があります。
&
としてエンコード&
<
としてエンコード<
技術的には、以下をエスケープする必要はありませんが、一般的にはエスケープします。
>
としてエンコード>
"
としてエンコード"
'
としてエンコード'
詳細については、このウィキペディアの記事を参照してください。
CDATAを利用する
CDATAは文字データの略で、これらのタグの間にあるデータには、XMLマークアップとして解釈できるデータが含まれていることを意味しますが、
CDATAという用語は、XMLパーサーによって解析されるべきではないテキストデータについて使用されます。
「<」や「&」などの文字は、XML要素では無効です。
「<」は、パーサーが新しい要素の開始として解釈するため、エラーを生成します。
「&」は、パーサーが文字エンティティの開始として解釈するため、エラーを生成します。
JavaScriptコードなどの一部のテキストには、多くの「<」または「&」文字が含まれています。エラーを回避するために、スクリプトコードをCDATAとして定義できます。
CDATAセクション内のすべては、パーサーによって無視されます。
例:
<![CDATA[ select <abcddata> ]]>
< = >
> = <
これらはHTMLエンティティであり、受け入れる必要があります