Java XmlStreamReader非法状态异常

Java XmlStreamReader非法状态异常,java,xml,illegalstateexception,xmlstreamreader,Java,Xml,Illegalstateexception,Xmlstreamreader,我正在尝试解析一个xml文件,该文件包含如下所示的行: <z:row TapID="4501" GesprekID="1358900" Onderzoek="123456789" NummerBeller="316987654321" TenaamstellingBeller="Pieter de Klerck, geboren 28-10-1980" NummerGebelde="316123456789" TenaamstellingGebelde="de Klerck B.V" Aa

我正在尝试解析一个xml文件,该文件包含如下所示的行:

<z:row TapID="4501" GesprekID="1358900" Onderzoek="123456789" NummerBeller="316987654321" TenaamstellingBeller="Pieter de Klerck, geboren 28-10-1980" NummerGebelde="316123456789" TenaamstellingGebelde="de Klerck B.V" Aard="Spraak" IMSIGebelde="098765432112345" Sessienummer="46" Wanneer="2014-11-09T10:49:25" Duur="39" ProductID="1000134498162" PaalGebeldeStartUniek="204-16-60076-33924" PaalGebeldeEindUniek="204-16-60076-33924"/>

有人能给我解释一下为什么可以获取AttributeValue,但当我被要求获取AttributeName时却不断出错吗?

这段代码看起来应该可以工作,你确定没有切掉可能相关的位吗?我不这么认为,该代码是dropwizard Web服务的一部分,但我认为这与此无关。我更多地考虑了
开关中的其他
案例
可能会失败或其他问题。@biziclop开关中没有额外案例。@MichaelKay使用woodstox库为我解决了这个问题!再次感谢tnx为我指明了正确的方向!
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader reader = factory.createXMLStreamReader(file);
while (reader.hasNext()) {
  int event = reader.next();
  switch (event) {
      case XMLStreamConstants.START_ELEMENT:
      if ("row".equals(reader.getLocalName())) {
          for(int x = 0; x < reader.getAttributeCount(); x++){
             System.out.println(reader.getAttributeName(x) +": " + reader.getAttributeValue(x);)
          } 
      }
  }
}
java.lang.IllegalStateException: Current state is not among the states START_ELEMENT , ATTRIBUTEvalid for getAttributeName()