У меня проблема при попытке извлечь элемент с помощью getElementFragmentNs
.
Вот пример теста:
@Test
public void shouldNotShadowNamespaceAndAddSiblingNamespaces() throws Exception {
byte[] bytes = ("<ns2:Response xmlns=\"urn://message\" xmlns:ns2=\"urn://ns2\">\n" +
" <ns2:Data>\n" +
" <Content>\n" +
" <tns:Response\n" +
" xmlns:tns=\"urn://tns\"\n" +
" xmlns=\"urn://shadow\">\n" +
" <tns:test/>\n" +
" </tns:Response>\n" +
" </Content>\n" +
" <AttachmentHeaderList>\n" +
" <AttachmentHeader/>\n" +
" </AttachmentHeaderList>\n" +
" </ns2:Data>\n" +
"</ns2:Response>").getBytes("UTF-8");
VTDGen vg = new VTDGen();
vg.setDoc(bytes);
vg.parse(true); // set namespace awareness to true
VTDNav vn = vg.getNav();
AutoPilot ap = new AutoPilot(vn);
ap.selectElement("AttachmentHeader");
ap.iterate();
ElementFragmentNs efn = vn.getElementFragmentNs();
byte[] result = efn.toBytes();
assertThat(new String(result, "UTF-8"), is("<AttachmentHeader xmlns=\"urn://message/\"/>"));
}
Фактический результат:
<AttachmentHeader xmlns:tns="urn://tns" xmlns="urn://shadow" xmlns:ns2="urn://ns2"/>
Но я ожидаю:
<AttachmentHeader xmlns="urn://message/"/>
Почему он скрывает пространство имен по умолчанию с пространством имен по умолчанию от дочернего подэлемента?И почему он добавляет ненужные пространства имен из него?