XML的解析
来源:互联网 发布:消防工程师软件 编辑:程序博客网 时间:2024/05/16 14:23
XML (extensible markup language) 可扩展标记语言
dom解析XML
public static void printNodeAttr(Node node){NamedNodeMap namedNodeMap = node.getAttributes();for(int i = 0;i < namedNodeMap.getLength();i++){Node attrNode = namedNodeMap.item(i);System.out.println(attrNode.getNodeName()+":"+attrNode.getFirstChild().getNodeValue());}}public static void main(String[] args) {DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();try {DocumentBuilder builder = factory.newDocumentBuilder();Document doc = builder.parse("src/students.xml");NodeList nodeList = doc.getElementsByTagName("students");Element element = (Element)nodeList.item(0);NodeList studentsNodeList = element.getElementsByTagName("student");System.out.println(studentsNodeList.getLength());for(int i=0;i < studentsNodeList.getLength();i++){Element e = (Element) studentsNodeList.item(i);System.out.println("姓名: "+e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());printNodeAttr(e.getElementsByTagName("name").item(0));System.out.println("性别: "+e.getElementsByTagName("sex").item(0).getFirstChild().getNodeValue());System.out.println("年龄: "+e.getElementsByTagName("age").item(0).getFirstChild().getNodeValue());System.out.println("===========");}} catch (Exception e) {e.printStackTrace();}}
SAX解析XML 继承DefaultHandler 重载5个读取xml的方法,存入Bean中,再打印
public class SAX2 extends DefaultHandler{private List<Student> students = null;private Student student = null;private String preTag=null;// 标记上一个节点名称@Overridepublic void startDocument() throws SAXException {students = new ArrayList<Student>();System.out.println("开始读取学生信息");}@Overridepublic void endDocument() throws SAXException {System.out.println(" \n 学生信息读取完毕");}@Overridepublic void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {if("student".equals(qName)){student = new Student();student.setId(attributes.getValue(0));}preTag=qName;}@Overridepublic void endElement(String uri, String localName, String qName) throws SAXException {if("student".equals(qName)){students.add(student);student=null;}preTag=null;}@Overridepublic void characters(char[] ch, int start, int length) throws SAXException {if(preTag!=null){String content = new String(ch,start,length);if("name".equals(preTag)){student.setName(content);}else if("sex".equals(preTag)){student.setSex(content);}else if("age".equals(preTag)){student.setAge(Integer.parseInt(content));}}}public static void main(String[] args) throws Exception{SAXParserFactory factory= SAXParserFactory.newInstance();SAXParser parser = factory.newSAXParser();SAX2 sax2 = new SAX2();parser.parse("src/students.xml",sax2);System.out.println(sax2.students);for (Student s : sax2.students) {System.out.println(s);}}}
DOM4J生成与解析XML
public class DOM4J1 {public static void main(String[] args) {Document document = DocumentHelper.createDocument();Element studentElement = document.addElement("student");studentElement.addAttribute("id","001");studentElement.addAttribute("aa","xx");Element name = studentElement.addElement("name");name.setText("张三");Element sex = studentElement.addElement("sex");sex.setText("男");Element age = studentElement.addElement("age");age.setText("20");OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("utf-8");try {XMLWriter writer = new XMLWriter(new FileOutputStream("src/student3.xml"),format);writer.write(document);writer.close();} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
public class DOM4J2 {public static void main(String[] args)throws Exception {SAXReader saxReader = new SAXReader();Document document = saxReader.read("src/students.xml");Element rootElement = document.getRootElement();Iterator iter = rootElement.elementIterator();while(iter.hasNext()){Element studentElement = (Element) iter.next();System.out.println("学号"+studentElement.attributeValue("id"));System.out.println("姓名"+studentElement.elementText("name"));System.out.println("性别"+studentElement.elementText("sex"));System.out.println("年龄"+studentElement.elementText("age"));}}}
JDOM总体思想和DOM4J差不多,但是效率和形式不如DOM4J。
0 0
- XML的解析 DOM解析
- 解析xml的字符串
- xml的解析
- xml的解析
- XML的解析
- 微软的 XML 解析
- xml文件的解析
- 关于XML的解析
- xml的解析
- XML的解析方法
- XML的java解析- -
- 解析xml的方法
- XML的解析模型
- 解析xml的方式
- xml的解析方法
- XML的pull解析
- android的xml解析
- XML的解析
- Win10配置Java环境变量的配置
- ULua热更新
- 下载apk
- 《小强软件测试疯狂讲义-性能及自动化》一书正式发布
- CentOS 6.5安装SVN 客户端TortoiseSVN
- XML的解析
- 查看JDK以及框架源码
- 监听进程并自动重启(两种方法)
- Min Stack问题及解法
- Web前端应该从哪些方面来优化网站?
- iOS 架构模式--解密 MVC,MVP,MVVM以及VIPER架构
- 决策树构建之ID3算法
- Ansible
- 主题:windows 如何查看端口占用情况?