无法解析 xml 条目
Can't parse xml entry
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;
...
这是什么原因?
在用于标识 XML 元素的代码中使用命名空间前缀 ("News") 通常不是一个好主意。前缀在 XML 文件的某处定义,完全独立于实际的命名空间标识符。
正确的识别必须使用QName。
如果所有元素都来自同一个命名空间,您可以单独使用本地名称 ("Source"),但必须了解 XML 文件的所有信息才能保证。
稍后好吧,最后一个提议是您已经在代码中做的事情。因此,只需使用
static final String SOURCE = "Source";
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;
...
这是什么原因?
在用于标识 XML 元素的代码中使用命名空间前缀 ("News") 通常不是一个好主意。前缀在 XML 文件的某处定义,完全独立于实际的命名空间标识符。
正确的识别必须使用QName。
如果所有元素都来自同一个命名空间,您可以单独使用本地名称 ("Source"),但必须了解 XML 文件的所有信息才能保证。
稍后好吧,最后一个提议是您已经在代码中做的事情。因此,只需使用
static final String SOURCE = "Source";