您好我正在尝试解析下面的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。我想知道背后的原因。