Если факт, что >
отображается в ваших атрибутах, является проблемой, проблема заключается в том, как используется XML, а не как он создается.
Любой синтаксический анализатор XML будет удалять экранированные символьные объекты, когда он используется для получения значения атрибута. Если вы используете синтаксический анализатор XML при использовании XML-документа, вы никогда не увидите этого; парсер скажет вам, что значение атрибута display.methods::close->test_ManyInvoke
.
Мне кажется, что эта "проблема" появляется только по одной из двух причин:
Кто-то, кто не понимает, как работает XML, смотрит на вывод и говорит: «Эй, этого не следует делать».
Кто-то, кто не понимает, как работает XML, написал свою собственную логику для анализа XML. («Зачем мне использовать чей-то синтаксический анализатор XML, когда я могу просто написать простое регулярное выражение?» Ну, это одна из причин, почему.)
Как правило, если вы когда-нибудь используете disable-output-escaping='yes'
в XSLT или создаете разделы CDATA, вы, вероятно, делаете не то, что нужно. Это не определенно - есть подходящие варианты использования обоих, но, по моему опыту, в подавляющем большинстве случаев, если ответ «использовать CDATA», вы задаете неправильный вопрос.