XML Offset始终返回-1

时间:2015-07-16 06:33:18

标签: java xml

您好我正在尝试解析下面的xml。这是一个XML例外:

<?xml version="1.0" encoding="UTF-8"?>
<eipsiebeldata xmlns="http://www.emeter.com/energyip/eipsiebeldata">
  <product id="Product.1" op="upsert">
    <sfield name="Sales Product Flag" value="Y"/>
    <sfield name="Unit of Measure" value=""/>
    <sfield name="Secondary Asset Type" value=""/>
    <sfield name="Version Status" value=""/>
    <sfield name="Sub Type" value="Pricing Plan"/>
    <sfield name="Type" value="Service"/>
    <sfield name="Sales Service Flag" value="N"/>
    <sfield name="Name" value="Pricing Plan - R2B"/>
    <sfield name="Group Name" value=""/>
    <sfield name="Description" value="Pricing Plan - R2B"/>
    <productAttribute id="ProductAttribute.2" op="upsert">
      <sfield name="Remark" value=""/>
      <sfield name="Status" value="Active"/>
      <sfield name="End Date" value=""/>
      <sfield name="Type Value" value="R2_B"/>
      <sfield name="Name" value="Name"/>
      <sfield name="Start Date" value="01/01/1990 00:00:00"/>
    </productAttribute>
  </product>
</eipsiebeldata>

我写的代码是:

//创建XML Stream Readers和Filter Reader。

xmlsr = inputFactory.createXMLStreamReader(new FileInputStream(
                            file));
                    xmlfsr = inputFactory.createFilteredReader(xmlsr,
                            getStreamFilter(sObjectAdapter));

//流过滤器实现。

StreamFilter getStreamFilter(final ISObjectAdapter sObjectAdapter) {
    return new StreamFilter() {
        public boolean accept(XMLStreamReader reader) {
            Location loc = reader.getLocation();
            int pos = loc.getCharacterOffset();
            return false;
        }
    };
}

问题是字符偏移始终返回-1。我想知道这背后的原因。实际上,它使用JDK 7更新27在env中工作,而不是使用JDK 7.0在env中工作。这是关于Java版本问题。 我能够在JDK7更新27环境中处理的相同XML。请注意,XML大小很大,是因为XML大小,但是在JDK 7 update 27中我能够将XML作为字符偏移处理,从未返回为-1,而在其他环境中,始终返回字符偏移量为-1。令人惊讶的事实是,即使读取器光标向前移动,即使在该条件下,字符偏移也返回为-1。我想知道背后的原因。

1 个答案:

答案 0 :(得分:0)

jdk附带的stax解析器没有实现位置。尝试使用woodstoc。此解析器支持位置信息;