如何确定XML文档中的所有名称空间

时间:2012-02-13 15:55:46

标签: java xml dom xpath

我正在尝试对具有多个名称空间的文档使用XPath查询,并且需要定义NamespaceContext。检索我能想到的所有命名空间的唯一方法是迭代所有节点和属性,并明确地收集它们的命名空间URI和前缀。这似乎非常低效,我怀疑这是最好的做法。

应该怎么做?
谢谢

1 个答案:

答案 0 :(得分:2)

因为名称空间可以在XML文档的标题中定义,也可以在元素本身中定义,所以你是对的;如果您需要在文档中使用每个命名空间,则需要处理整个文档(如果您希望100%完成,则包括所有导入)。

如果您希望人们能够像使用XPath式查询的数据库一样查询您的文档,您可能希望将文档加载到内存表示中,无论如何都可以快速查询。

鉴于您必须将整个事物处理到内存中,这将是您解析所有命名空间的机会。

注意:我忽略了“为什么”你需要所有命名空间,我只是假设你需要它们,在这种情况下你对整个文档的处理是正确的。