2010-04-12 2 views
0

Когда я разбираю строку xml, как показано ниже, я получаю странные атрибуты типа «autowire» со значением «default». В любом случае, я могу получить только те атрибуты, которые явно определены?Вопрос о разборе XML

<bean id="aaaa" class="com.test.Service"> 
    <property name="cccc" ref="cccc"/> 
</bean> 

Я делаю простой синтаксический превращая его в Document и затем итерация над Узлов.

Document document = docBuilder.parse(input); 
NodeList nodeList = document.getChildNodes(); 
etc. 

ответ

2

Это зависит от того, что вы используете для синтаксического анализа. Я предполагаю, что это файл конфигурации Spring bean. Обычно с ним связана XML-схема, которая будет определять все значения по умолчанию для атрибутов.

Поэтому, когда фактический синтаксический анализатор XML просматривает документ, он построит какое-то представление (DOM-парсеры, очевидно, построят дерево, SAX-синтаксические элементы закроют события и т. Д.) XML и вставляют эти значения по умолчанию.

3

Вы можете использовать следующие API, чтобы найти ли атрибут явно указано или нет:

если вы используете DOM: Attr.getSpecified()

, если вы используете SAX: Attributes2.isSpecified(qname)

Смежные вопросы