XmlPullParser找不到名称中带冒号的属性

时间:2014-11-11 10:57:11

标签: java xml xmlpullparser

在我的XML中,有一个带有属性的标记,其中包含一个带冒号的名称:

<GGS:bericht StUF:bestandsnaam="bestand.txt" >

我已经尝试了所有这些组合来尝试返回此属性的值:

parser.getAttributeValue(null, "StUF:bestandsnaam");
parser.getAttributeValue("StUF", "bestandsnaam");
parser.getAttributeValue(null, "bestandsnaam");
parser.getAttributeValue("bestandsnaam", "StUF");

...但它们都返回null。

如果我手动删除&#34; StUF:&#34;属性名称的一部分,它通过调用:

parser.getAttributeValue(null, "bestandsnaam");

那你怎么得到这样一个属性的价值呢?不使用getAttributeValue()的int参数版本,即。

2 个答案:

答案 0 :(得分:4)

“带冒号的名称”表示该属性位于命名空间中。在XML文档的某个地方你应该在这个元素的一个祖先上找到一个名称空间声明,看起来像

xmlns:StUF="{something}"

并且这是{something}(可能看起来像HTTP URL或urn:...),您需要将其作为“namespace”参数传递。例如,如果你有:

<root xmlns:GSS="urn:example:GSS" xmlns:StUF="http://stuff.com/namespace">
  <GGS:bericht StUF:bestandsnaam="bestand.txt" >

然后代码需要

parser.getAttributeValue("http://stuff.com/namespace", "bestandsnaam");

答案 1 :(得分:1)

getAttributeValue with the namespace parameter的文档说您需要启用名称空间处理。尝试在处理开始时启用它,如同setFeature

example
setFeature(FEATURE_PROCESS_NAMESPACES, true)