【问题标题】:dom4j ignoring xmlns attributes while readingdom4j 在读取时忽略 xmlns 属性
【发布时间】:2013-07-08 23:12:27
【问题描述】:

我不知道为什么但是dom4j没有加载xmlns属性例如:

xmlns="http://webservices.example.com/servicesplatform/command/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

其他属性正常加载但被忽略。我使用属性迭代器检查所有元素的所有属性。

有一个例子我是如何阅读这个xml的:

SAXReader reader = new SAXReader();

Document document = reader.read(file);
return document;

我不知道我什至可以尝试什么。 :( 知道如何从 xml 文件中获取此属性吗? :(

编辑: 我就是这样遍历它们的

public void getAllAttributes(Element element) {


    Iterator<Attribute> attributeterator = element.attributeIterator();



    while (attributeterator.hasNext()) {
        Attribute attribute = iteratorAttribute.next();
        System.out.println(attribute.getQualifiedName() + " " + , attribute.getValue());

    }


}

【问题讨论】:

  • 如何遍历属性?你能把代码贴在你试图找到它们的地方吗?

标签: java xml xml-parsing dom4j


【解决方案1】:

xmlns 属性为Namespace's。要使用Dom4j 阅读它们,您可以根据需要使用以下两种方法中的任何一种:

Namespace.get(String uri)

Namespace.get(String prefix, String uri)

【讨论】:

    【解决方案2】:

    可以通过

    获取默认命名空间

    element.getNamespace()

    所有其他命名空间都可以通过

    获得

    element.additionalNamespaces()

    【讨论】:

    • 它有效,但是当我尝试获取此命名空间的名称时,我得到了 null :(
    【解决方案3】:

    我使用的是 dom4j 2.1.0,以下代码可用于获取默认命名空间:

    document.getRootElement().getNamespaceURI()
    

    返回:http://webservices.example.com/servicesplatform/command/1.0.0

    您可以通过以下方式获取所有命名空间对象:

    document.getRootElement().additionalNamespaces()
    

    【讨论】:

      猜你喜欢
      • 2011-12-10
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      相关资源
      最近更新 更多