氟塑料离心泵www.buybeng.com

jquery教程http://www.software8.co/wzjs/jquery/

用SAX(JDK自带API)解析XML文件

解析的工具类继承org.xml.sax.helpers.DefaultHandler,然后覆盖父类的几个方法即可。方法的详细解释可以参照JDK的API文档。

  • startDocument() 开始解析XML时被调用,一般可以用来做初始化操作。
  • startElement() 解析到某个元素(标签)的开头时(例如)被调用,一般用来判断是否已开始解析某特定元素(标签)。
  • endElement() 解析完某个元素(标签)时(例如)被调用,一般在此对某些逻辑标记做重置操作。
  • characters()  解析到某个文本元素(例如张三)时被调用,一般在此方法中取值,需要结合startElement()方法中设置的逻辑标志进行判断是否解析到XML文档中特定的位置。

下面是一个实例:

Java代码:
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.io.File;
  4. import java.io.IOException;
  5. import javax.xml.parsers.ParserConfigurationException;
  6. import javax.xml.parsers.SAXParser;
  7. import javax.xml.parsers.SAXParserFactory;
  8. import org.xml.sax.Attributes;
  9. import org.xml.sax.SAXException;
  10. import org.xml.sax.helpers.DefaultHandler;
  11. public class URLPatternSAXParser extends DefaultHandler{
  12. private List urlPatternList;
  13. private boolean isSecurityConstraint;
  14. private boolean isWebResourceCollection;
  15. private boolean isUrlPattern;
  16. private final String elementSecurityConstraint = "security-constraint";
  17. private final String elementWebResourceCollection = "web-resource-collection";
  18. private final String elementUrlPattern = "url-pattern";
  19. public List getUrlPatternList() {
  20. return urlPatternList;
  21. }
  22. @Override
  23. public void startDocument() throws SAXException {
  24. this.urlPatternList = new ArrayList();
  25. }
  26. //原文参考自杭州红木家具维修http://www.hzlxwx.com
  27. @Override
  28. public void startElement(String uri, String localName, String qName,
  29. Attributes attributes) throws SAXException {
  30. if (elementSecurityConstraint.equals(qName)) {
  31. isSecurityConstraint = true;
  32. return;
  33. }
  34. if (isSecurityConstraint && elementWebResourceCollection.equals(qName)) {
  35. isWebResourceCollection = true;
  36. return;
  37. }
  38. if (isSecurityConstraint && isWebResourceCollection
  39. && elementUrlPattern.equals(qName))
  40. isUrlPattern = true;
  41. }
  42. @Override
  43. public void endElement(String uri, String localName, String qName)
  44. throws SAXException {
  45. if (elementSecurityConstraint.equals(qName)) {
  46. isSecurityConstraint = false;
  47. }
  48. if (elementWebResourceCollection.equals(qName))
  49. isWebResourceCollection = false;
  50. if (elementUrlPattern.equals(qName))
  51. isUrlPattern = false;
  52. }
  53. @Override
  54. public void characters(char[] ch, int start, int length)
  55. throws SAXException {
  56. if (isSecurityConstraint && isWebResourceCollection && isUrlPattern) {
  57. this.urlPatternList.add(new String(ch, start, length));
  58. }
  59. }
  60. public void parser(File xmlFile) throws SAXException, IOException,
  61. ParserConfigurationException {
  62. if (xmlFile == null) {
  63. throw new IllegalArgumentException(
  64. "parameter 'xmlFile' must not null !");
  65. }
  66. SAXParserFactory factory = SAXParserFactory.newInstance();
  67. SAXParser parser = factory.newSAXParser();
  68. // 禁止DTD解析,避免因找不到DTD文件导致解析失败。
  69. parser.getXMLReader()
  70. .setFeature(
  71. "http://apache.org/xml/features/nonvalidating/load-external-dtd",
  72. false);
  73. try {
  74. parser.parse(xmlFile, this);
  75. catch (SAXException e) {
  76. System.err.println("Cann't parse " + xmlFile.getAbsolutePath());
  77. throw e;
  78. }
  79. }
  80. }

上面代码中,parser()是主方法,调用完此方法之后,就可以调用getUrlPatternList()方法获取到从web.xml中解析出来的url-pattern节点的值(security-constraint/web-resource-collection/url-pattern)。


另外,取元素的属性值,可以在startElement()方法中用attributes.getValue("<属性名>")获取到。


posted on 2013-04-15 17:58 你爸是李刚 阅读(582) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2013年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿

随笔档案

文章档案

技术网站

行业网站

搜索

最新评论

阅读排行榜

评论排行榜

站长网 氟塑料离心泵 注塑机 液晶广告机