`
wayfarer
  • 浏览: 297722 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

XML解析

阅读更多

下面代码用到了jdom和dom4j两个包

public class JDOMXML_1 {
	public static void main(String[] args) throws IOException, JDOMException {
		BuildXMLDoc();
	}
	public static void BuildXMLDoc() throws IOException, JDOMException {
		Element root = new Element("学生花名册");
		Document doc = new Document(root); // 根节点添加到文档中;

		for (int i = 0; i < 2; i++) {
			Element elements = new Element("学生");
			elements.setAttribute("id", String.valueOf(i));

			// 给 user 节点添加子节点并赋值
			elements.addContent(new Element("姓名").setText("张三"));
			elements.addContent(new Element("年龄").setText("28"));
			elements.addContent(new Element("性别").setText("男"));

			for (int j = 0; j < 2; j++) {
				Element elements2 = new Element("地址");
				elements2.addContent(new Element("浦东").setText("香楠路"));
				elements2.addContent(new Element("杨浦").setText("大学路"));
				elements2.addContent(new Element("黄浦").setText("南京西路"));
				elements.addContent(elements2);
			}
			root.addContent(elements);
		}
		XMLOutputter xmlOut = new XMLOutputter();
		xmlOut.output(doc, new FileOutputStream("D:\\student_4.xml"));
	} 
}

 

public class JDOMXML_2 {
	public static void main(String[] args) {
		jDom_DOM_Reader();
		jDom_SAX_Reader();
	}
	@SuppressWarnings("unchecked")
	private static void jDom_DOM_Reader() {
		DOMBuilder builder = new DOMBuilder();
        DOMParser parser = new DOMParser();
        String output = "";
        try {
            parser.parse("D:\\student_4.xml");
            org.w3c.dom.Document domDocument = parser.getDocument();
            org.jdom.Document jdomDocument = builder.build(domDocument);
            Element root = jdomDocument.getRootElement();
            output += "Root Node: " + root.getName() + "\r\n";
            List<Element> children = root.getChildren();
            output += "SubNodes's Size " + children.size() + "\r\n";
            for(int i = 0; i < children.size(); i++){
                Element node = children.get(i);
                output += i + " subNode: " + node.getName() + "\r\n";
                List<Attribute> attrs = node.getAttributes();
                for(int k = 0; k < attrs.size(); k++){
                    Attribute attr = attrs.get(k);
                    output += "Attribute: " + attr.getName() + " --> " + attr.getValue() + "\r\n";
                }
                List<Element> childrenList = node.getChildren();
                for(int j = 0; j < childrenList.size(); j++){
                    Element childNode = childrenList.get(j);
                    output += "SubNode: " + childNode.getName() + " --> " + childNode.getValue() + "\r\n";
                }
            }
            System.out.println(output);
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
	}
	@SuppressWarnings("unchecked")
	private static void jDom_SAX_Reader() {
		SAXBuilder builder = new SAXBuilder();
        String output = "";
        try {
        	org.jdom.Document doc = builder.build("D:\\student_4.xml");
            Element root = doc.getRootElement();
           
            List<Element> children = root.getChildren();
            output += "id\t" + "姓名\t" + "年龄\t" + "性别\t" + "\r\n";
            for(int i = 0; i < children.size(); i++){
                Element node = children.get(i);
                Attribute attr = node.getAttribute("id");
                output += attr.getValue() + "\t";
                output += node.getChildText("姓名") + "\t";
                output += node.getChildText("年龄") + "\t";
                output += node.getChildText("性别") + "\r\n";
            }
            System.out.println(output);
        } catch (JDOMException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
	}
}

 

public class DOMXML_1 {
    public static void main(String[] args) {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.newDocument();
            document.setXmlVersion("1.0");

            // **************************************************************************************
            Element root = document.createElement("学生花名册"); // 创建根节点  
            document.appendChild(root);
           
            Element student = document.createElement("学生");
            student.setAttribute("姓名", "张三");
            root.appendChild(student);

            Element sex = document.createElement("性别");
            sex.setTextContent("男");
            student.appendChild(sex);

            Element age = document.createElement("年龄");
            age.setTextContent("25");
            student.appendChild(age);
           
            Element phone = document.createElement("电话");
            phone.setTextContent("55660535|13622654565");
            student.appendChild(phone);
            
            // **************************************************************************************
            student = document.createElement("学生");
            student.setAttribute("姓名", "李四");
            root.appendChild(student);

            sex = document.createElement("性别");
            sex.setTextContent("女");
            student.appendChild(sex);
            
            age = document.createElement("年龄");
            age.setTextContent("18");
            student.appendChild(age);
           
            Element addr = document.createElement("地址");
            addr.setTextContent("title,publisher,published_calendar");
            student.appendChild(addr);

            // **************************************************************************************
            File file = new File("D://student_1.xml"); //生成xml文件
            if (!file.exists()) {
                file.createNewFile();
            }
            FileOutputStream out = new FileOutputStream(file);
            StreamResult xmlResult = new StreamResult(out);
           
            // **************************************************************************************
            TransformerFactory transFactory = TransformerFactory.newInstance();
            Transformer transFormer = transFactory.newTransformer();
            DOMSource domSource = new DOMSource(document);
            transFormer.transform(domSource, xmlResult); //输出xml文件           
            System.out.println(file.getAbsolutePath());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

public class DOMXML_2 {
	private Vector<StudentBean> student_vector = new Vector<StudentBean>();
	
	public DOMXML_2() {
		String[] names = {"张三", "李四", "王五"};
		String[] sexs = {"男", "女", "男"};
		int[] ages = {25, 22, 31};
		String[] phones = {"021-55662222", "027-36588814", "010-66452235"};
		for (int i = 0; i < phones.length; i++) {
			StudentBean sb = new StudentBean();
			sb.setName(names[i]);
			sb.setSex(sexs[i]);
			sb.setAge(ages[i]);
			sb.setPhone(phones[i]);
			student_vector.addElement(sb);
		}
	}
	
	public static void main(String[] args) {
		DOMXML_2 test = new DOMXML_2();
		File file = new File("D://student_2.xml");
		try {
			test.domWrite(file);
			test.domRead(file);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	private void domRead(File inFile) throws ParserConfigurationException, SAXException, IOException {
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = dbf.newDocumentBuilder();
		org.w3c.dom.Document doc = db.parse(inFile);
		
		// 取跟目录
		org.w3c.dom.Element root = doc.getDocumentElement();
		// 取学生列表元素
		NodeList students = root.getElementsByTagName("学生");
		for (int i = 0; i < students.getLength(); i++) {
			// 取学生元素
			org.w3c.dom.Element student = (org.w3c.dom.Element) students.item(i);
			StudentBean studentBean = new StudentBean();
			studentBean.setName(student.getAttribute("姓名"));
			System.out.println("Name = " + studentBean.getName());
			
			NodeList sexs = student.getElementsByTagName("性别");
			if (sexs.getLength() == 1) {
				org.w3c.dom.Element e = (org.w3c.dom.Element) sexs.item(0);
				org.w3c.dom.Text t = (org.w3c.dom.Text) e.getFirstChild();
				studentBean.setSex(t.getNodeValue());
				System.out.println("Sex = " + studentBean.getSex());
			}
			
			NodeList ages = student.getElementsByTagName("年龄");
			if (ages.getLength() == 1) {
				org.w3c.dom.Element e = (org.w3c.dom.Element) ages.item(0);
				org.w3c.dom.Text t = (org.w3c.dom.Text) e.getFirstChild();
				studentBean.setAge(Integer.parseInt(t.getNodeValue()));
				System.out.println("Age = " + studentBean.getAge());
			}
			
			NodeList phones = student.getElementsByTagName("电话");
			if (phones.getLength() == 1) {
				org.w3c.dom.Element e = (org.w3c.dom.Element) phones.item(0);
				org.w3c.dom.Text t = (org.w3c.dom.Text) e.getFirstChild();
				studentBean.setPhone(t.getNodeValue());
				System.out.println("Phone = " + studentBean.getPhone());
			}
			student_vector.add(studentBean);
			System.out.println("============================");
		}
	}
	private void domWrite(File outFile) throws ParserConfigurationException, FileNotFoundException, TransformerException {
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = dbf.newDocumentBuilder();
		org.w3c.dom.Document doc = db.newDocument();
		
		// 建立根元素
		org.w3c.dom.Element root = doc.createElement("学生花名册");
		
		// 将根元素添加到文档
		doc.appendChild(root);
		
		// 取学生信息的Bean列表
		for (int i = 0; i < student_vector.size(); i++) {
			StudentBean studentBean = (StudentBean) student_vector.get(i);
			
			org.w3c.dom.Element student = doc.createElement("学生");
			student.setAttribute("姓名", studentBean.getName());
			root.appendChild(student);
			
			org.w3c.dom.Element sex = doc.createElement("性别");
			student.appendChild(sex);
			org.w3c.dom.Text tSex = doc.createTextNode(studentBean.getSex());
			sex.appendChild(tSex);
			
			org.w3c.dom.Element age = doc.createElement("年龄");
			student.appendChild(age);
			org.w3c.dom.Text tAge = doc.createTextNode(String.valueOf(studentBean.getAge()));
			age.appendChild(tAge);
			
			org.w3c.dom.Element phone = doc.createElement("电话");
			student.appendChild(phone);
			org.w3c.dom.Text tPhone = doc.createTextNode(studentBean.getPhone());
			phone.appendChild(tPhone);
		}
		FileOutputStream fos = new FileOutputStream(outFile);
		StreamResult xmlResult = new StreamResult(fos);
		
		TransformerFactory transFactory = TransformerFactory.newInstance();
        Transformer transFormer = transFactory.newTransformer();
        DOMSource domSource = new DOMSource(doc);
        transFormer.transform(domSource, xmlResult);
	}
	
	private class StudentBean {
		private String sex;
		private String name;
		private int age;
		private String phone;
		public String getSex() {
			return sex;
		}
		public void setSex(String sex) {
			this.sex = sex;
		}
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public int getAge() {
			return age;
		}
		public void setAge(int age) {
			this.age = age;
		}
		public String getPhone() {
			return phone;
		}
		public void setPhone(String phone) {
			this.phone = phone;
		}
	}
}

 

public class XMLEncoder_XMLDecoder {
	public static void object2XML(Object obj, String path) throws FileNotFoundException {
		File file = new File(path);
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
		XMLEncoder xmlEncoder = new XMLEncoder(bos); // 构造一个XML编码器
		xmlEncoder.writeObject(obj); // 使用XML编码器写对象
		xmlEncoder.close();
	}

	public static Object xml2Object(String path) throws FileNotFoundException {
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));
		XMLDecoder xmlDecoder = new XMLDecoder(bis); // 构造一个XML解码器
		Object obj = xmlDecoder.readObject(); // 使用XML解码器读对象
		xmlDecoder.close();
		return obj;
	}

	public static void main(String[] args) throws IOException {
		// *****User(JavaBean)的定义必须为Public的,否则会报错。That should be STATIC. Any public instance methods have to follow the bean get/set pattern.
		User user = new User();
		user.setName("张三");
		user.setAge(29);
		user.setSex("男");
		user.setPhone("15825253636");
	
		String path = "D://student_3.xml";
		XMLEncoder_XMLDecoder.object2XML(user, path);
		User newUser = (User) XMLEncoder_XMLDecoder.xml2Object(path);
		System.out.println(newUser.getName());
		System.out.println(newUser.getAge());
		System.out.println(newUser.getSex());
		System.out.println(newUser.getPhone());
	}
}

 

public class User {
	private String sex;
	private String name;
	private int age;
	private String phone;
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
}

 

22

分享到:
评论

相关推荐

    易语言 xml解析 易语言 xml解析 教程 带源码

    易语言XML解析是编程领域中的一个重要主题,尤其对于使用易语言进行开发的程序员来说,理解并掌握XML(可扩展标记语言)的解析方法是至关重要的。XML作为一种结构化数据存储和交换格式,广泛应用于网络通信、配置...

    java xml解析工具类 java xml解析工具类

    java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析...

    C# XML解析方式

    根据给定文件中的标题、描述、标签以及部分内容,可以总结并深入探讨以下关于C#中XML解析的关键知识点: ### C#中的XML解析方式 #### 1. XML Text Reader(流式解析) - **简介**:在.NET框架中,`XMLTextReader`...

    XML解析器示例

    在LabVIEW(Laboratory Virtual Instrument Engineering Workbench)这个强大的图形化编程环境中,XML解析器是处理和操作XML数据的关键工具。本示例主要展示了如何在LabVIEW中实现XML文件的加载、保存和解析。 首先...

    xml解析文件的两种方式

    本文将详细介绍XML解析文件的两种主要方式:SAX(Simple API for XML)和DOM(Document Object Model)。 **1. DOM解析** DOM解析方式是将整个XML文档加载到内存中,构建一个树形结构,称为DOM树。这个树的每个...

    XML解析和生成工具

    本文将深入探讨XML解析和生成工具的相关知识,以及如何利用提供的`Markup.cpp`和`Markup.h`文件进行操作。 XML的结构: XML文档由一系列元素构成,每个元素都有一个开始标签和结束标签,如 `&lt;tag&gt;` 和 `&lt;/tag&gt;`。...

    XML解析 很全 一看就懂的东东

    在Java中,XML解析有四种主要的方法:DOM、SAX、JDOM和DOM4J。 1. DOM(文档对象模型)是W3C推荐的标准,它将XML文档转换为一棵树形结构,允许开发者通过节点遍历和操作XML内容。DOM的优势在于它提供了一种灵活的...

    ios 简单xml解析DEMO绝对可用

    本教程将介绍如何在iOS应用中实现简单的XML解析,并提供了一个名为"UITableViewTricks"的DEMO,供开发者们参考学习。 XML文件结构清晰,易于理解,但在iOS中解析XML数据并非内置功能,需要借助第三方库或者Apple...

    MusicXML 解析与布局

    MusicXML是一种开放标准的音乐符号交换格式,它允许数字音乐...总之,"MusicXML解析与布局"项目涵盖了XML解析、数据结构设计、图形渲染、音乐理论等多个方面的知识,对于深入理解音乐和计算机科学的结合具有重要意义。

    XML解析工具

    读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,...

    适合嵌入式系统的开源XML解析器

    在嵌入式系统中,由于资源限制,往往需要轻量级且高效的XML解析器。"minixml"就是这样一个专为嵌入式系统设计的开源XML解析器,它提供DOM(Document Object Model)支持,使得开发者能够方便地处理XML文档。 mini...

    java心电图xml解析.zip

    Java XML解析是Java开发中的一项重要技能,尤其是在处理结构化数据时。XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于配置文件、数据交换和文档存储等领域。本压缩包“java心电图xml解析....

    XML解析支持库

    XML解析支持库则是用于处理XML文档的核心工具,它们帮助开发者有效地读取、解析、创建和操作XML数据。 在Java开发中,常见的XML解析库有DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming...

    XML解析技术研究XML解析技术研究

    XML解析技术是XML应用的核心,它涉及将XML文档转换为可处理的结构化数据。XML,全称为eXtensible Markup Language,是一种元语言,用于描述结构化数据,独立于编程语言、操作系统和传输协议。W3C联盟自1996年开始...

    XML解析器,用于解析XML文件

    理解和熟练使用XML解析器是任何IT专业人士的必备技能之一,无论是在移动应用、Web服务还是桌面应用程序中,XML解析都发挥着关键作用。了解和掌握TinyXML这样的解析库,可以帮助开发者更高效地处理XML数据。

    XML解析器下载JAR包

    XML解析器是处理XML文档的核心组件,它能够读取XML文件并将其内容转换为程序可以理解的形式。在Java环境中,XML解析器通常以JAR(Java Archive)文件的形式提供,方便开发者集成到项目中。 "XML解析器下载JAR包"这...

    java XML解析方式实现自动生成word文档

    XML解析方式是一种高效且灵活的方法,能够帮助我们实现这一目标。本篇文章将详细探讨如何利用Java和XML解析来自动化创建Word文档。 首先,我们需要了解XML的结构。XML(Extensible Markup Language)是一种标记语言...

    linux xml解析资源

    本资源包主要关注的是Linux环境下的XML解析,特别是开源代码的应用。 标题中的“Linux XML解析资源”指的是在Linux操作系统中处理和解析XML文档的相关工具和技术。在Linux世界里,由于其开源和自由软件的理念,有...

    xml 解析源代码和应用

    本压缩包包含了一个C#原创的XML解析程序,以及其在实际应用中的例子,帮助我们深入理解XML解析的原理和实践。 XML文档由一系列元素组成,每个元素可以有子元素和属性,通过这些元素,XML可以描述复杂的数据结构。在...

    将xml解析成树状结构显示

    解析XML为树状结构是通过XML解析器完成的,这些解析器可以分为DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)等几种类型。 1. DOM解析器:它将整个XML文档加载到内存中...

Global site tag (gtag.js) - Google Analytics