首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取XML文档中使用的前缀/命名空间绑定,最好使用org.w3c.dom和javax.xml API

获取XML文档中使用的前缀/命名空间绑定,最好使用org.w3c.dom和javax.xml API
EN

Stack Overflow用户
提问于 2013-08-22 13:49:53
回答 1查看 4.1K关注 0票数 1

是否有一种方法可以获得XML文档中使用的前缀/命名空间绑定,最好是使用标准的org.w3c.orgjavax.xml API?我理解前缀可以通过在包含的元素中重新定义,所以API也应该能够解释这一点。

我正在寻找一个代码片段,它采用某种序列化形式的XML文档,并将前缀的Map<String, String>返回到URI名称绑定(再加上API中的一些额外的聪明,以解释封闭元素中的重新定义)。理想情况下,库可能能够完成更好的工作,例如标识/清除未使用的绑定,将重复绑定移动到它们最近的共同祖先(而不是让它们在各处复制)等等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-22 15:39:50

下面是一个开始,使用番石榴MultiMap

代码语言:javascript
复制
Document doc = ...;

Multimap<String, String> bindings = LinkedHashMultimap.create();
DocumentTraversal dt = (DocumentTraversal) doc;
NodeIterator i = dt.createNodeIterator(doc, NodeFilter.SHOW_ELEMENT,
        null, false);
Element element = (Element) i.nextNode();
while (element != null) {
    String prefix = element.getPrefix();
    if (prefix != null) {
        String uri = element.getNamespaceURI();
        bindings.put(prefix, uri);
    }
    element = (Element) i.nextNode();
}

这将只获取有效的绑定,并且它不会绑定任何默认名称空间(当然,这是可以修复的)。绑定的重新定义将按文档顺序表示,但不表示它们发生的深度。

我想这个方法的任何进一步改进都取决于您的用例,例如,您还需要哪些信息来使重新定义的绑定变得合理?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18382375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档