如何在XML中检索命名空间

时间:2016-03-29 11:16:36

标签: java xml

我正在使用javax.xml.stream.XMLInputFactory来解析XML文件,但是我无法解析命名空间。

在XML的第一行中定义了名称空间

<iati-activities xmlns:akvo="http://akvo.org/iati-activities" version="2.01" generated-datetime="2016-03-29T07:18:39Z">

我正在尝试使用以下代码段进行解码

int theType = theReader.next();
switch (theType) {
    case XMLStreamConstants.START_ELEMENT:
        String theLocalName = theReader.getLocalName();
        if (theLocalName.equalsIgnoreCase(IatiLabel.IATIACTIVITIES.getLabel())) {
            for (int i = 0; i < theReader.getAttributeCount(); i++) {
                System.out.println("Localname: " + theReader.getAttributeLocalName(i));
                System.out.println("Namespace: " + i + " = " + theReader.getAttributeNamespace(i));
                System.out.println("Attr value: " + theReader.getAttributeValue(i));
//              System.out.println("Prefix: " + theReader.getNamespacePrefix(i));
                System.out.println("URI: " + theReader.getNamespaceURI(i));
            }

            System.out.println("URI 2: " + theReader.getPrefix());
    }
}

结果是:

Localname: version
Namespace: 0 = null
Attr value: 2.01
URI: http://akvo.org/iati-activities
Localname: generated-datetime
Namespace: 1 = null
Attr value: 2016-03-29T07:18:39Z
URI: null
URI 2: 

如果我取消注释theReader.getNamespacePrefix()行,我会得到一个空指针异常。

XML文件的其余部分解析得很好,但我需要知道某个部分的命名空间前缀。

知道我做错了吗?

0 个答案:

没有答案