Я получаю XML, который выглядит следующим образом, и использую XMLBeans для его анализа:
<reply xmlns="http://www.xmlisfun.com/abc/def/1.0">
<item-list>
<item>
<item-data>data</item-data>
</item>
</item-list>
</reply>
В схеме есть сложный тип с именем ItemListReplyType, который импортируется.
Из-за того, что кто-то возится с определением схемы, объекты, проанализированные XMLBeans, не будут правильно генерировать объект ItemListReplyType. Объект ItemListReplyType всегда будет говорить, что он не содержит никаких объектов «item». Это связано с конфликтом пространства имен.
Я заметил, что когда я анализирую следующее, я могу нормально получить свой массив объектов в коде из объекта ItemListReplyType (массив не пустой - объекты "item" присутствуют, как и ожидалось).
<reply xmlns="http://www.xmlisfun.com/abc/def/1.0">
<item-list>
<prefix:item xmlns:prefix="http://www.xmlisfun.com/particular_namespace">
<prefix:item-data>data</prefix:item-data>
</prefix:item>
</item-list>
</reply>
Нет необходимости говорить, что правильным решением было бы исправить взлом, сделанный для схемы, и заново сгенерировать все объекты XMLBeans. Однако это было бы очень хорошим решением год назад, прежде чем проект был построен на всех этих объектах. Я бы лучше не связывался с этим.
Есть ли способ просто легко изменить XML, чтобы добавить пространство имен и префикс ко всем элементам элемента и его дочерним элементам? Я борюсь с желанием сделать это вручную и покончить с этим. Я подумал, что проверю здесь помощь.
Спасибо.