有人能帮我解决这个JAVA SAXParser吗?
我已经折腾了三个小时,还是搞不定这个该死的解析器。抱歉说脏话。
我就是不明白,为什么我找不到一个合适的教程,能完全满足我的需求。
我只想给这个函数传一个字符串/XML,然后解析它。其实没那么难。在Python里,我闭着眼睛都能做到。这里的文档简直太棒了:http://www.crummy.com/software/BeautifulSoup/documentation.html
import BeautifulSoup
soup = BeautifulSoup(the_xml)
persons_name = soup.findAll('first_name')[0].string
为什么我找不到一个简单好用的文档,教我怎么解析XML????? 这是我现在用的JAVA SAX代码,但它不工作,我甚至不知道为什么。
public static void parseit(String thexml)
{
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
SAXParser saxParser = factory.newSAXParser();
saxParser.parse( thexml , new DefaultHandler() );
} catch (Throwable err) {
err.printStackTrace ();
}
}
有人能帮我写一段用SAX解析器解析XML的代码吗...拜托...就五行代码而已。
5 个回答
2
你需要用自己的实现来扩展 DefaultHandler。SAX 解析器在处理大文档时效果不错。如果文档不大,可能用其他的 XML 解析器会更好,比如 dom4j。
这里有一个简单的 SAX 教程
3
你需要扩展你默认的处理器 DefaultHandler。比如,可以试试这个:
saxParser.parse( new InputSource(new StringReader(thexml)) , new DefaultHandler()
{
public void startElement(String uri, String localName, String qName, Attributes attributes)
{
System.out.println("Hello "+qName);
}
});
3
好的,你需要做的是自己实现一个处理器,而不是使用默认的处理器。所以把
saxParser.parse( thexml , new DefaultHandler() );
替换成
saxParser.parse( thexml , new MyFreakingHandler() );
这里的 MyFreakingHandler 要实现 HandlerBase 接口,或者可以继承 DefaultHandler 类。然后简单地为一些方法提供实现,比如
public void startDocument () throws SAXException
public void endElement (String name) throws SAXException
不过我不知道为什么你在网上找不到任何教程。我至少有三年没用过 SAXParser,为了回答你的问题,我只是简单地问了谷歌。
编辑:
好的,为了澄清一下。以前有一个官方的 Java SAX 教程,但我现在找不到了。不过,网上还有一些不错的非官方教程,应该会对你有帮助。比如你可以试试这个链接:http://www.java-samples.com/showtutorial.php?tutorialid=152