gpt4 book ai didi

java - 使用 SAX 解析器解析自关闭 XML 标签时遇到问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:41:31 25 4
gpt4 key购买 nike

我在使用 SAX 解析自闭合 XML 标记时遇到问题。我正在尝试从 Google Base API 中提取链接标签。我在解析常规标签方面取得了合理的成功。

这是xml的片段

<entry>
<id>http://www.google.com/base/feeds/snippets/15802191394735287303</id>
<published>2010-04-05T11:00:00.000Z</published>
<updated>2010-04-24T19:00:07.000Z</updated>
<category scheme='http://base.google.com/categories/itemtypes' term='Products'/>
<title type='text'>En-el1 Li-ion Battery+charger For Nikon Digital Camera</title>
<link rel='alternate' type='text/html' href='http://rover.ebay.com/rover/1/711-67261-24966-0/2?ipn=psmain&amp;icep_vectorid=263602&amp;kwid=1&amp;mtid=691&amp;crlp=1_263602&amp;icep_item_id=170468125748&amp;itemid=170468125748'/>
.
.

等等

我可以解析更新和发布的标签,但不能解析链接和类别标签。

这是我的 startElement 和 endElement 覆盖

public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if (qName.equals("title") && xmlTags.peek().equals("entry")) {

insideEntryTitle = true;

}
xmlTags.push(qName);

}

public void endElement(String uri, String localName, String qName)
throws SAXException {
// If a "title" element is closed, we start a new line, to prepare
// printing the new title.

xmlTags.pop();
if (insideEntryTitle) {
insideEntryTitle = false;
System.out.println();
}
}

xmltags 的声明..

private Stack<String> xmlTags = new Stack<String>(); 

有什么帮助吗?

这是我在这里的第一篇文章..我希望我遵守了发帖规则!非常感谢大家..

更正:endElement 被调用。 字符没有。

public void characters(char[] ch, int start, int length) throws SAXException 
{
if (insideEntryTitle)
{
String url= new String(ch, start, length);
System.out.println("url="+title);
i++;
}
}

最佳答案

characters 的作用是传递 XML 元素标记之间的内容(以 block 的形式,每个方法调用一个 block )。所以如果你有一个像

这样的 XML 元素
<Foo someattrib=“” />

然后 characters 不会被调用,因为那里没有内容可供解析器告诉您。

如果您依赖于即使标记为空也必须在此处调用字符方法,您做错了

characters 方法将元素文本添加到缓冲区,但 startElement 和 endElement 需要负责清除和读取缓冲区,因为 endElement 是您知道已收到所有元素文本的地方。如果没有什么可读的,不调用字符应该没问题。

因为您可能还没有在任何一个字符调用中拥有所有内容,该方法中一定没有任何业务逻辑。如果有,那么您的代码在某些时候将无法工作。

有关如何实现字符,请参阅 this example .如果您想做的是读取属性值,请参阅 this example .

关于java - 使用 SAX 解析器解析自关闭 XML 标签时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2707531/

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