gpt4 book ai didi

java - 为什么 qName 起作用而 LocalName 不起作用?

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

我正在学习 Java SAX API。我使用 php 制作了自己的 XML 提要。这是 XML 文档

enter image description here

现在,当我想让我的应用程序输出到控制台时,什么也没有发生。我将问题定位到 endElement我的方法 XMLHandler延伸 DefaultHandler .这是我的实现。

public void endElement(String uri, String localName, String qName) throws SAXException {
//I added the next three lines for debugging
System.out.println("Found End Element " + count + " times");
System.out.println("Localname = " + localName);
System.out.println("QName = " + qName);
super.endElement(uri, localName, qName);
if (this.currentItem != null){
if (localName.equalsIgnoreCase(me.osama.XMLParsing.BaseFeedParser.ITEMNAME)){
currentItem.setItemName(builder.toString());
} else if (localName.equalsIgnoreCase(me.osama.XMLParsing.BaseFeedParser.ITEMSITE)){
currentItem.setItemSite(builder.toString());
} else if (localName.equalsIgnoreCase(me.osama.XMLParsing.BaseFeedParser.ITEMNO)){
currentItem.setItemNo(builder.toString());
} else if (localName.equalsIgnoreCase(me.osama.XMLParsing.BaseFeedParser.ITEM)){
System.out.println(currentItem);
items.add(currentItem);
}
builder.setLength(0);
}
count++;
}

结果是 localName不断变空,因此条件永远不会成立,代码也永远不会进入决策 block 。另一方面qName正确显示所有名称,一旦我将变量更改为 qName List<Item> items集合类型确实填满并正常工作。

我来这里是想问为什么 qName 有效而不是 localName?而来自 IBM DeveloperWorks 的教程使用了 RSS 提要和 localName对他来说很完美。

附言这是 IBM 教程使用的提要:http://www.androidster.com/android_news.rss

最佳答案

根据 SAX namespace for Java API ,

By default, an XML reader will report a Namespace URI and a localName for every element that belongs in a namespace, in both the start and end handler.

也许,如果您向 XML 添加一个 namespace 并在该 namespace 中定义您的元素,它会返回一个有效的 localName。文章还提到,对于命名空间处理,一些实现将返回empty qName

关于java - 为什么 qName 起作用而 LocalName 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8420410/

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