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;
...
是什么原因?
答案 0 :(得分:1)
在用于标识XML元素的代码中使用名称空间前缀(&#34; News&#34;)通常是个坏主意。前缀在XML文件中的某处定义,并且完全独立于实际的名称空间标识符。
正确的标识必须使用QName。
如果所有元素都来自同一个命名空间,那么您可以单独使用本地名称(&#34; Source&#34;),但是必须知道所有关于XML文件才能保证这一点。
稍后嗯,最后一个提案就是您在代码中已经做过的事情。因此,只需使用
static final String SOURCE = "Source";