无法解析xml条目

时间:2015-01-23 09:40:12

标签: java xml stax

Xml有一个类似的条目:

<News:Source>AD HOC News</News:Source>

但是当使用stax xml解析器时,它会忽略该行:

    static final String SOURCE = "News:Source";
    XMLInputFactory inputFactory = XMLInputFactory.newInstance();
    // Setup a new eventReader
    InputStream in = read();
    XMLEventReader eventReader = inputFactory.createXMLEventReader(in);
    // read the XML document
        while (eventReader.hasNext()) {
            XMLEvent event = eventReader.nextEvent();
            if (event.isStartElement()) {
                String localPart = event.asStartElement().getName().getLocalPart();
                    switch (localPart) {
                    ...
                        case SOURCE:
                            // System.out.println("nothing happens here");
                            source = getCharacterData(event, eventReader);
                            break;
                    ...

是什么原因?

1 个答案:

答案 0 :(得分:1)

在用于标识XML元素的代码中使用名称空间前缀(&#34; News&#34;)通常是个坏主意。前缀在XML文件中的某处定义,并且完全独立于实际的名称空间标识符。

正确的标识必须使用QName。

如果所有元素都来自同一个命名空间,那么您可以单独使用本地名称(&#34; Source&#34;),但是必须知道所有关于XML文件才能保证这一点。

稍后嗯,最后一个提案就是您在代码中已经做过的事情。因此,只需使用

static final String SOURCE = "Source";