gpt4 book ai didi

java - VTD-XML 遮盖同级元素的命名空间并添加意外的 ns

转载 作者:行者123 更新时间:2023-12-02 00:24:25 27 4
gpt4 key购买 nike

我在尝试通过 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/"/>

为什么它会使用同级子元素中的默认命名空间来隐藏默认命名空间?为什么它添加了不必要的命名空间?

最佳答案

我不确定 XML 文档是否可以有 2 个默认命名空间,一个位于根元素,一个位于子元素级别。

关于java - VTD-XML 遮盖同级元素的命名空间并添加意外的 ns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58063035/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com