gpt4 book ai didi

java - getCharacterOffset() 返回不正确的值

转载 作者:行者123 更新时间:2023-11-30 09:32:02 25 4
gpt4 key购买 nike

我正在使用 StAX 解析 XML 文件,并想知道每个标记的开始和结束位置。为此,我正在尝试使用 getLocation().getCharacterOffset() , 但它会为 first 之外的每个标签返回不正确的值。

XMLInputFactory factory = XMLInputFactory.newInstance();
XMLEventReader reader = factory.createXMLEventReader(
new StringReader("<root>txt1<tag>txt2</tag></root>"));

XMLEvent e;
e = reader.nextEvent(); // START_DOCUMENT
System.out.println(e);
System.out.println(e.getLocation());
e = reader.nextEvent(); // START_ELEMENT "root"
System.out.println(e);
System.out.println(e.getLocation());
e = reader.nextEvent(); // CHARACTERS "txt1"
System.out.println(e);
System.out.println(e.getLocation());
e = reader.nextEvent(); // START_ELEMENT "tag"
System.out.println(e);
System.out.println(e.getLocation());

上面的代码打印了这个:

<?xml version="null" encoding='null' standalone='no'?>
Line number = 1
Column number = 1
System Id = null
Public Id = null
Location Uri= null
CharacterOffset = 0

<root>
Line number = 1
Column number = 7
System Id = null
Public Id = null
Location Uri= null
CharacterOffset = 6

txt1
Line number = 1
Column number = 12
System Id = null
Public Id = null
Location Uri= null
CharacterOffset = 11

<tag>
Line number = 1
Column number = 16
System Id = null
Public Id = null
Location Uri= null
CharacterOffset = 15

<root> 之后CharacterOffset正确 6 , 但在 txt1 之后它是 11虽然我希望看到 10 .它返回的确切偏移量是多少?

最佳答案

这可能是 Sun/Oracle 的 StAX 实现的错误/功能。使用 Woodstox,您会得到 0, 0, 6, 10,这似乎是正确的。从 http://wiki.fasterxml.com/WoodstoxHome 下载 Woodstox和将 JAR (woodstox-core + stax2-api) 添加到您的类路径中。然后,XMLInputFactory 将自动选择 Woodstox 实现。

关于java - getCharacterOffset() 返回不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12656824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com