java解析xml的几种方式 (三)

2014-11-24 09:44:13 · 作者: · 浏览: 4
}

39.

40. @Override

41. public void startElement(String uri, String localName, String qName,

42. Attributes attributes) throws SAXException

43. {

44. System.out.println("start element");

45. }

46.

47. @Override

48. public void endElement(String uri, String localName, String qName)

49. throws SAXException

50. {

51. System.out.println("finish element");

52. }

53. }

Java代码

1. import java.io.File;

2. import java.util.Stack;

3.

4. import javax.xml.parsers.SAXParser;

5. import javax.xml.parsers.SAXParserFactory;

6.

7. import org.xml.sax.Attributes;

8. import org.xml.sax.SAXException;

9. import org.xml.sax.helpers.DefaultHandler;

10.

11. public class SaxTest2

12. {

13. public static void main(String[] args) throws Exception

14. {

15. SAXParserFactory factory = SAXParserFactory.newInstance();

16.

17. SAXParser parser = factory.newSAXParser();

18.

19. parser.parse(new File("student.xml"), new MyHandler2());

20. }

21. }

22.

23. class MyHandler2 extends DefaultHandler

24. {

25. private Stack stack = new Stack();

26.

27. private String name;

28.

29. private String gender;

30.

31. private String age;

32.

33. @Override

34. public void startElement(String uri, String localName, String qName,

35. Attributes attributes) throws SAXException

36. {

37. stack.push(qName);

38.

39. for(int i = 0; i < attributes.getLength(); i++)

40. {

41. String attrName = attributes.getQName(i);

42. String attrValue = attributes.getValue(i);

43.

44. System.out.println(attrName + "=" + attrValue);

45. }

46. }

47.

48. @Override

49. public void characters(char[] ch, int start, int length)

50. throws SAXException

51. {

52. String tag = stack.peek();

53.

54. if("姓名".equals(tag))

55. {

56. name = new String(ch, start,length);

57. }

58. else if("性别".equals(tag))

59. {

60. gender = new String(ch, start, length);

61. }

62. else if("年龄".equals(tag))

63. {

64. age = new String(ch, start, length);

65. }

66. }

67.

68. @Override

69. public void endElement(String uri, String localName, String qName)

70. throws SAXException

71. {

72. stack.pop(); //表示该元素已经解析完毕,需要从栈中弹出

73.

74. if("学生".equals(qName))

75. {

76. System.out.println("姓名:" + name);

77. System.out.println("性别:" + gender);

78. System.out.println("年龄:" + age);

79.

80. System.out.println();

81. }

82.

83. }

84. }

JDOM:
JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。(http://jdom.org

JDOM 直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性(方法重载、集合概念等),把SAX和DOM的功能有效地结合起来。

JDOM是用Java语言读、写、操作XML的新API函数。在直接、简单和高效的前提下,这些API函数被最大限度的优化。

 JDOM 与 DOM 主要有两方面不同。首先,JDOM 仅使用具体类而不使用接口。这在某些方面简化了 API,但是也限制了灵活性