我想知道 java 中的哪个 XML 解析器(如果有的话)可以为我提供它解析的 xml 元素的字节偏移量。
我正在使用 Lucene 来索引我的 XML 文件,当我搜索特定单词时,我需要输出包含 XML Element 、文件名以及字节偏移量,以便我可以快速找到该偏移量。
我想知道 java 中的哪个 XML 解析器(如果有的话)可以为我提供它解析的 xml 元素的字节偏移量。
我正在使用 Lucene 来索引我的 XML 文件,当我搜索特定单词时,我需要输出包含 XML Element 、文件名以及字节偏移量,以便我可以快速找到该偏移量。
看看 VTD-XML: http: //vtd-xml.sourceforge.net,它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;
}
}