有人可以帮我用这个JAVA SAXParser吗?
我一直在摆弄3个小时,我无法得到这个F *****解析器的工作。对不起,诅咒。 我不明白为什么我找不到一个像样的教程那正是我想要的。有人可以帮我用这个JAVA SAXParser吗?
我只想发送一个String/XML函数。然后,解析它。这并不难。在蟒蛇中,我可以闭着眼闭上眼睛。真棒,吓坏文档就在这里: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();
}
}
有人可以给我写代码来解析XML使用SAX解析器......请......它就像5行代码。
好的,所以你需要做的是实现你自己的处理程序(而不是使用默认的处理程序)。因此,与
saxParser.parse(thexml , new MyFreakingHandler());
其中MyFreakingHandler实现接口的HandlerBase取代
saxParser.parse(thexml , new DefaultHandler());
,或者它可以扩展DefaultHandler类。然后简单地提供执行这样的方法,如
public void startDocument() throws SAXException
public void endElement (String name) throws SAXException
但我不知道为什么你无法在网上找到任何教程。我至今还没有使用SAXParser至少3年,为了回复您的帖子,我只是简单地向Google寻求帮助。
编辑:
好了,所以清除的东西出来。过去有一个SAX正式的Java教程,不知何故,我现在无法在网上找到,但是仍然有很多体面的非官方教程可以帮助您。试试这个例子:http://www.java-samples.com/showtutorial.php?tutorialid=152
您必须扩展您的默认处理程序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);
}
});
我不知道这将是一个选择,但由于Groovy和Java发挥好在一起为什么不尝试Groovy options之一来处理XML。
在在XML Slurper(http://groovy.codehaus.org/Reading+XML+using+Groovy's+XmlSlurper
)
def records = new XmlSlurper().parseText(thexml)
def persons_name = records.first_name[0]
在我看来这是接近你会得到BeautifulSoup在Java兼容的方式特定的外观。
你必须用你自己的实现来扩展DefaultHandler。如果您正在处理大型文档,萨克斯解析器很好。如果不是,那么使用另一个xml解析器可能会更好,例如dom4j。
下面是一个简单sax tutorial
使用Java语言的XPath API
XPathFactory factory = XPathFactory.newInstance();
XPath xPath = factory.newXPath();
XPathExpression xPathExpression = xPath.compile("//first_name");
NodeList nodes = (NodeList) xPathExpression.evaluate(
new InputSource(new FileInputStream(the_xml)), XPathConstants.NODESET);
是的,这是不必要的冗长。
不要尝试使用XML解析器来解析XML。改用正则表达式。 ;) – 2010-02-12 08:32:22
我刚刚找到一个文档。 http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/ – TIMEX 2010-02-12 08:39:29