我想知道在Java中哪个XML解析器(如果有的话)可以提供它解析的xml元素的字节偏移量。
我正在使用Lucene索引我的XML文件,当我搜索特定单词时,我需要输出包括XML元素、文件名以及字节偏移量,以便我可以快速地定位到该偏移量。
我想知道在Java中哪个XML解析器(如果有的话)可以提供它解析的xml元素的字节偏移量。
我正在使用Lucene索引我的XML文件,当我搜索特定单词时,我需要输出包括XML元素、文件名以及字节偏移量,以便我可以快速地定位到该偏移量。
VTDNav.getContentFragment()
编码了元素的偏移量和长度:javadoc。您可以通过将其转换为int (int) VTDNav.getContentFragment()
来获取偏移量。考虑使用StAX (javax.xml.stream),这是一个开始的示例:
XMLInputFactory f = XMLInputFactory.newInstance();
XMLStreamReader xr = f.createXMLStreamReader(new FileReader("test.xml"));
while (xr.hasNext()) {
int n = xr.next();
Location l = xr.getLocation();
switch (n) {
case XMLStreamReader.START_ELEMENT:
System.out.println(l.getColumnNumber());
System.out.println(l.getLineNumber());
... more
break;
}
}
char
偏移量。如果后台流使用可变长度的字节字符串(UTF-8
),那么除非它们控制字节流到字符流的转换,否则它们无法提供字节偏移量。我知道的唯一提供字节偏移量的API是VTD API,即使你将Reader而不是InputStream传递给它,它也无法提供字节偏移量。 - Stephen Connolly