gpt4 book ai didi

java - SAX 解析——获取文本节点的高效方式

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:44:24 25 4
gpt4 key购买 nike

给定这个 XML 片段

<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>

在SAX中,获取属性值很容易:

@Override
public void startElement (String uri, String localName,
String qName, Attributes attributes) throws SAXException{
if(qName.equals("book")){
String bookId = attributes.getValue("id");
...
}
}

但要获取文本节点的值,例如<author> 的值tag,挺难的……

private StringBuffer curCharValue = new StringBuffer(1024);

@Override
public void startElement (String uri, String localName,
String qName, Attributes attributes) throws SAXException {
if(qName.equals("author")){
curCharValue.clear();
}
}

@Override
public void characters (char ch[], int start, int length) throws SAXException
{
//already synchronized
curCharValue.append(char, start, length);
}

@Override
public void endElement (String uri, String localName, String qName)
throws SAXException
{
if(qName.equals("author")){
String author = curCharValue.toString();
}
}
  1. 我不确定上述示例是否有效,您如何看待这种方法?
  2. 有更好的方法吗? (获取文本节点的值)

最佳答案

这是使用 SAX 执行此操作的常用方法。

请注意,每个标记可能会多次调用 characters()。看这个question获取更多信息。这是一个完整的 example .

否则你可以试试StAX .

关于java - SAX 解析——获取文本节点的高效方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2064679/

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