如何将SAX解析XML改写为长尾词?

2026-04-10 14:311阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计427个文字,预计阅读时间需要2分钟。

如何将SAX解析XML改写为长尾词?

plaintextgistfile1.txt: 包含 cn.jxau.sax 包,导入 ArrayList、List、SAXParser、SAXParserFactory、Attributes、SAXException 和 org.xml.sax。

gistfile1.txt

package cn.jxau.sax; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import cn.jxau.domain.Book; public class Demo { public static void main(String[] args) throws Exception, SAXException { // 创建产生解析器的工厂 SAXParserFactory factory = SAXParserFactory.newInstance(); // 得到解析器 SAXParser parser = factory.newSAXParser(); // 得到读取器 XMLReader reader = parser.getXMLReader(); // 设置读取器的处理器(由程序员设置) // 创建处理器对象 BookHandler handler = new BookHandler(); reader.setContentHandler(handler); // 读取文档 reader.parse("book.xml"); List list = handler.getlist(); for (Book book : list) { System.out.println(book.getName() + " " + book.getAuthor() + " " + book.getPrice()); } } } class BookHandler extends DefaultHandler { private Book book = null; private List list = new ArrayList(); public List getlist() { return list; } // 定义记住标签名的变量 private String current_tag = null; // 定义记住第几本书的变量 private int count = 0; @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // TODO Auto-generated method stub super.startElement(uri, localName, qName, attributes); current_tag = qName; if ("书".equals(current_tag)) { // 创建一本书 book = new Book(); count++; } } @Override public void characters(char[] ch, int start, int length) throws SAXException { // TODO Auto-generated method stub super.characters(ch, start, length); if ("书名".equals(current_tag)) { book.setName(new String(ch,start,length)); } if ("作者".equals(current_tag)) { book.setAuthor(new String(ch,start,length)); } if ("售价".equals(current_tag)) { book.setPrice(new String(ch,start,length)); } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { // TODO Auto-generated method stub super.endElement(uri, localName, qName); if ("书".equals(qName) && count == 1) { list.add(book); } current_tag = null;//每个标签结束后都会有一段空白字段,空白纸短也是一个对象, //由于空白字段没有标签,所以程序不会执行startelement和endelement,而去执行characters //此时的current_tag的值还是上一个标签名,所以要将current_tag的值置为null } }

如何将SAX解析XML改写为长尾词?

本文共计427个文字,预计阅读时间需要2分钟。

如何将SAX解析XML改写为长尾词?

plaintextgistfile1.txt: 包含 cn.jxau.sax 包,导入 ArrayList、List、SAXParser、SAXParserFactory、Attributes、SAXException 和 org.xml.sax。

gistfile1.txt

package cn.jxau.sax; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import cn.jxau.domain.Book; public class Demo { public static void main(String[] args) throws Exception, SAXException { // 创建产生解析器的工厂 SAXParserFactory factory = SAXParserFactory.newInstance(); // 得到解析器 SAXParser parser = factory.newSAXParser(); // 得到读取器 XMLReader reader = parser.getXMLReader(); // 设置读取器的处理器(由程序员设置) // 创建处理器对象 BookHandler handler = new BookHandler(); reader.setContentHandler(handler); // 读取文档 reader.parse("book.xml"); List list = handler.getlist(); for (Book book : list) { System.out.println(book.getName() + " " + book.getAuthor() + " " + book.getPrice()); } } } class BookHandler extends DefaultHandler { private Book book = null; private List list = new ArrayList(); public List getlist() { return list; } // 定义记住标签名的变量 private String current_tag = null; // 定义记住第几本书的变量 private int count = 0; @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // TODO Auto-generated method stub super.startElement(uri, localName, qName, attributes); current_tag = qName; if ("书".equals(current_tag)) { // 创建一本书 book = new Book(); count++; } } @Override public void characters(char[] ch, int start, int length) throws SAXException { // TODO Auto-generated method stub super.characters(ch, start, length); if ("书名".equals(current_tag)) { book.setName(new String(ch,start,length)); } if ("作者".equals(current_tag)) { book.setAuthor(new String(ch,start,length)); } if ("售价".equals(current_tag)) { book.setPrice(new String(ch,start,length)); } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { // TODO Auto-generated method stub super.endElement(uri, localName, qName); if ("书".equals(qName) && count == 1) { list.add(book); } current_tag = null;//每个标签结束后都会有一段空白字段,空白纸短也是一个对象, //由于空白字段没有标签,所以程序不会执行startelement和endelement,而去执行characters //此时的current_tag的值还是上一个标签名,所以要将current_tag的值置为null } }

如何将SAX解析XML改写为长尾词?