1

私のxmlファイルには、件名に表示される「特殊」文字を含む属性「containsValue」のタグがあります。

<original_msg_body id="msgBodySpecialCharsRule" containsValue=";ìè+òàù-<^èç°§_>!£$%&/()=?~`'#;" />

私のxmlスキーマでは、属性にxs:stringがあります。

<xs:attribute name="containsValue" type="xs:string"  />

この値が別の文字列内に含まれているかどうかをチェックするJavaソフトウェア内でこの値を使用します。

しかし、私は常にこの例外を取得します:

javax.xml.bind.UnmarshalException
 - with linked exception:
[org.xml.sax.SAXParseException: The value of attribute "containsValue" associated with an element type "original_msg_body" must not contain the '<' character.]

どうすれば解決できますか?属性タイプをxs:NMTOKENに変更しようとしましたが、同じ例外が発生します。他にタイプはありますか?

たとえば、<のようなHTML表現を使用して文字エンコードを変更できると思いますが、文字列の比較には注意が必要です...

4

2 に答える 2

3

エンティティ参照を使用する: XMLドキュメント内の<with&lt;>withなどを置き換えます。&gtXMLパーサーは、実際の文字とそのエンティティ参照の間の変換を処理します。つまり、コードで実際の文字<または>文字を取得します。

于 2010-04-21T09:37:24.067 に答える
0

<、、>のよう"な特別なXMLエンティティをエスケープする必要があります&lt;&gt;&quote;

于 2010-04-21T09:40:37.790 に答える