java中的xml文件_Java中的的XML文件读写

XML简介

要理解XML,HTML等格式,先来理解文档对象模型DOM

a31f008d6d309b3e7d82e11335ee824a.png

根据 DOM,HTML 文档中的每个成分都是一个节点,这些节点组成了一棵树。

DOM 是这样规定的:

整个文档是一个文档节点

每个 HTML 标签是一个元素节点

包含在 HTML 元素中的文本是文本节点

每一个 HTML 属性是一个属性节点

注释属于注释节点

节点彼此都有等级关系。HTML 文档中的所有节点组成了一个文档树(或节点树)。HTML 文档中的每个元素、属性、文本等都代表着树中的一个节点。树起始于文档节点,并由此继续伸出枝条,直到处于这棵树最低级别的所有文本节点为止。

读取xml文件:

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

public static void getFamilyMemebers(){

DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();

dbf.setIgnoringElementContentWhitespace(true);

try {

DocumentBuilder db = dbf.newDocumentBuilder();

Document doc = db.parse(xmlPath); // 使用dom解析xml文件

NodeList sonlist = doc.getElementsByTagName("son");

for (int i = 0; i < sonlist.getLength(); i++) // 循环处理对象

{

Element son = (Element)sonlist.item(i);;

for (Node node = son.getFirstChild(); node != null; node = node.getNextSibling()){

if (node.getNodeType() == Node.ELEMENT_NODE){

String name = node.getNodeName();

String value = node.getFirstChild().getNodeValue();

System.out.println(name+" : "+value);

}

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

注意到 factory 可以生成 builder,builder可以生成document,document可以生成特定名称的node 组成的nodeList,nodeList中的每个node可以转换成element,element可以返回node形式的儿子,node形式的元素可以获得它的属性。

现在,你能不能将xml的格式还原出来呢?其实并不难,注意xml文档实际上和html文档类似,只不过html文档定义了丰富标签而已。我们把每个元素与屏幕上一个div相对应,这样就可以用图形方便的表示xml结构了。

现在如果要解析下面的xml:

日报表

可以使用代码:

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

import java.io.File;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.NodeList;

public class Xml {

public static void main(String[] args) {

try {

DocumentBuilderFactory factory = DocumentBuilderFactory

.newInstance();

DocumentBuilder builder = factory.newDocumentBuilder();

Document document = builder.parse(new File("file.xml"));

Element rootElement = document.getDocumentElement();

NodeList list = rootElement.getElementsByTagName("Header");

Element element = (Element) list.item(0);

System.out.println(element.getChildNodes().item(0).getNodeValue());

} catch (Exception e) {

System.out.println("exception:" + e.getMessage());

}

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

写XML文件

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

public static void createSon() {

DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();

dbf.setIgnoringElementContentWhitespace(false);

try{

DocumentBuilder db=dbf.newDocumentBuilder();

Document xmldoc=db.parse(xmlPath);

Element root = xmldoc.getDocumentElement();

//删除指定节点

Element son =xmldoc.createElement("son");

son.setAttribute("id", "004");

Element name = xmldoc.createElement("name");

name.setTextContent("小儿子");

son.appendChild(name);

Element age = xmldoc.createElement("name");

age.setTextContent("0");

son.appendChild(age);

root.appendChild(son);

//保存

TransformerFactory factory = TransformerFactory.newInstance();

Transformer former = factory.newTransformer();

former.transform(new DOMSource(xmldoc), new StreamResult(new File(xmlPath)));

}catch(Exception e){

e.printStackTrace();

}

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

与JSON格式的对比

JSON格式包含有两种结构: 这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构

1、对象:对象在js中表示为“{}”括起来的内容引用了一个对象,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。

2、数组:数组在js中是中括号“[]”括起来的内容引用了一个数组,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值