0

次のコード

Xml.Node* node = new Xml.Node (null, "name");
node->set_content("&");

次のエラーが発生します。

エラー: 終了していないエンティティ参照

これはバグですか、それとも何か間違っていますか?

より大きい文字とより小さい文字の両方が正常に機能します。また、add_content メソッドはアンパサンド文字で正常に機能します。

4

1 に答える 1

5

これはバグですか、それとも何か間違っていますか?

後者。xmlNodeSetContentドキュメントから: 「コンテンツは XML CDATA の一部であると想定されているため、エンティティ参照は許可されますが、XML の特殊文字は最初にエスケープする必要があります...」. これを行うには、 GLib.Markup.escape_textを使用できます。

また、add_content メソッドはアンパサンド文字で正常に機能します。

xmlNodeAddContentドキュメントから: 「xmlNodeSetContent() とは対照的に、@content は未加工のテキストであると想定されているため、エスケープされていない XML 特殊文字が許可され、エンティティ参照はサポートされていません。」

于 2013-01-26T03:47:11.517 に答える