欢迎大家来到IT世界,在知识的湖畔探索吧!
xml操作:
xml文件
作用:
格式:良好,有效
java解析xml:
dom sax
dom4j
dom解析:
Document doc=DocumentBuilder.parse(“d:/xx.xml”) ;
Element element=doc.getDocumentElement();
ListNote list=element.notlist(“book”);
dom4j解析:
SaxReader reder = new SaxReader();
Document doc=reder.read(“D:/xx.xml”);
//ClassLoader.getResourceAsInstream(“xx.xml”)(根 扩展 应用)
List<Element> list=doc.elements(“book”);
//xpath //元素名 //元素名/子元素 //元素名【name=”】 //@属性
xml 存储数据
xml:平台无关 语言无关 存储数据的语言
编码格式:gbk 支持中文编码
utf-8 国际通用编码格式
格式良好的xml:
1必须有声明 <?xml version= encoding?>
2 有切只有一个根元素
3 标签对大小写敏感
4 属性值要加””
5 标签必须有开始有结束
6 正确嵌套
有效的xml:
自身携带dtd
xml 使用schema
dom解析xml的过程
1 创建DocumentBuilderFactory
2 让工厂 DocumentBuilder
3 Document doc=DocumentBuilder.parse(“解析文件”);
4 NodeList list=doc.getElementsByTagName(“元素名”);
5 for(NodeList ){
取出元素
}
6for(NodeList ){
取出元素的属性
子元素
}
dom增加节点:
1 创建DocumentBuilderFactory
2 让工厂 DocumentBuilder
3 Document doc=DocumentBuilder.parse(“解析文件”);
4 Elemenet root =doc.getDocumentElement(); 找到根节点
5 创建节点元素
Element xele= doc.createElemment(“Book”);
ele.setAttribute(“属性名”,”属性值”);
6 创建节点元素的子元素
Element ele= doc.createElemment(“price”);
ele.setTextContent(45);
xele.appendChild(ele);
7 把新创建的节点添加到根元素中,
root.appendChild(xele);
8 内存中的树保存到文件中
TransformerFactory fac = TransformerFactory .newInstancec();
Transformer transform = fac.newTransformer();
transform.transform(new DomSource(doc),new StreamResult(new FileOutputStream(文件)));
dom删除节点:
1 创建DocumentBuilderFactory
2 让工厂 DocumentBuilder
3 Document doc=DocumentBuilder.parse(“解析文件”);
4 查找我要删除的元素
NodeList list=doc.getElementsByTagName(“元素名”);
for(NodeList ){
取出元素
}
5 删除
元素.getParentNode().removeChild(元素);
6 内存中的树保存到文件中
TransformerFactory fac = TransformerFactory .newInstancec();
Transformer transform = fac.newTransformer();
transform.transform(new DomSource(doc),new StreamResult(new FileOutputStream(文件)));
dom修改节点:
1 创建DocumentBuilderFactory
2 让工厂 DocumentBuilder
3 Document doc=DocumentBuilder.parse(“解析文件”);
4 查找我要修改的元素
NodeList list=doc.getElementsByTagName(“元素名”);
for(NodeList ){
取出元素 比较条件
}
5 修改元素
元素.setTextContent();
元素.setAttribute();
6 内存中的树保存到文件中
TransformerFactory fac = TransformerFactory .newInstancec();
Transformer transform = fac.newTransformer();
transform.transform(new DomSource(doc),new StreamResult(new FileOutputStream(文件)));
html 网页展示
xml 存储数据
xml:平台无关 语言无关 存储数据的语言
编码格式:gbk 支持中文编码
utf-8 国际通用编码格式
格式良好的xml:
1必须有声明 <?xml version= encoding?>
2 有切只有一个根元素
3 标签对大小写敏感
4 属性值要加””
5 标签必须有开始有结束
6 正确嵌套
有效的xml:
自身携带dtd
xml 使用schema
dom解析xml的过程
1 创建DocumentBuilderFactory
2 让工厂 DocumentBuilder
3 Document doc=DocumentBuilder.parse(“解析文件”);
4 NodeList list=doc.getElementsByTagName(“元素名”);
5 for(NodeList ){
取出元素
}
6for(NodeList ){
取出元素的属性
子元素
}
dom增加节点:
1 创建DocumentBuilderFactory
2 让工厂 DocumentBuilder
3 Document doc=DocumentBuilder.parse(“解析文件”);
4 Elemenet root =doc.getDocumentElement(); 找到根节点
5 创建节点元素
Element xele= doc.createElemment(“Book”);
ele.setAttribute(“属性名”,”属性值”);
6 创建节点元素的子元素
Element ele= doc.createElemment(“price”);
ele.setTextContent(45);
xele.appendChild(ele);
7 把新创建的节点添加到根元素中,
root.appendChild(xele);
8 内存中的树保存到文件中
TransformerFactory fac = TransformerFactory .newInstancec();
Transformer transform = fac.newTransformer();
transform.transform(new DomSource(doc),new StreamResult(new FileOutputStream(文件)));
dom删除节点:
1 创建DocumentBuilderFactory
2 让工厂 DocumentBuilder
3 Document doc=DocumentBuilder.parse(“解析文件”);
4 查找我要删除的元素
NodeList list=doc.getElementsByTagName(“元素名”);
for(NodeList ){
取出元素
}
5 删除
元素.getParentNode().removeChild(元素);
6 内存中的树保存到文件中
TransformerFactory fac = TransformerFactory .newInstancec();
Transformer transform = fac.newTransformer();
transform.transform(new DomSource(doc),new StreamResult(new FileOutputStream(文件)));
dom修改节点:
1 创建DocumentBuilderFactory
2 让工厂 DocumentBuilder
3 Document doc=DocumentBuilder.parse(“解析文件”);
4 查找我要修改的元素
NodeList list=doc.getElementsByTagName(“元素名”);
for(NodeList ){
取出元素 比较条件
}
5 修改元素
元素.setTextContent();
元素.setAttribute();
6 内存中的树保存到文件中
TransformerFactory fac = TransformerFactory .newInstancec();
Transformer transform = fac.newTransformer();
transform.transform(new DomSource(doc),new StreamResult(new FileOutputStream(文件)));
*******dom4j的解析
1 导入dom4j的jar包
2 组织代码:先创建 SAXReader 对象
SAXReader reader = new SAXReader();
3 用Reader读取xml文件
Document doc=reader.read(“d:/xx.xml”);
4获取根元素
Element root=doc.getRootElemenet();
5 获取要解析的数据元素
List<Element> list=root.elements(“Book”);
6 循环遍历解析list中数据
for(Element e:list)
{
//获得属性
e.attributeValue(“id”)
//获取子元素
e.element(“name”).getText()
}
*******dom4j的增加元素:
1 导入dom4j的jar包
2 组织代码:先创建 SAXReader 对象
SAXReader reader = new SAXReader();
3 用Reader读取xml文件
Document doc=reader.read(“d:/xx.xml”);
4获取根元素
Element root=doc.getRootElemenet();
5 在某元素下增加元素
Element newx=root.addElement(元素名);
6 组织新元素的属性和子元素
newx.addAttribute(属性名,属性值);
Element child=newx.addElement(子元素名);
child.setText(子元素文本);
7保存到文件中
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding(“utf-8”);
XMLWriter writer = new XMLWriter(new FileWriter(“D:/test1.xml”),format);
writer.write(doc);
writer.close();
*******dom4j的修改元素:
1 导入dom4j的jar包
2 组织代码:先创建 SAXReader 对象
SAXReader reader = new SAXReader();
3 用Reader读取xml文件
Document doc=reader.read(“d:/xx.xml”);
4获取根元素
Element root=doc.getRootElemenet();
5 获取要解析的数据元素
List<Element> list=root.elements(“Book”);
6 循环遍历解析list中数据 查找要修改的元素
for(Element ele:list)
if(ele.element(“name”).getText().equals(“酸辣土豆丝”)){
ele.element(“price”).setText(“20”);
ele.element(“desc”).setText(“又酸又辣,很好吃”);
}
7保存到文件中
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding(“utf-8”);
XMLWriter writer = new XMLWriter(new FileWriter(“D:/test1.xml”),format);
writer.write(doc);
writer.close();
*******dom4j的删除元素:
1 导入dom4j的jar包
2 组织代码:先创建 SAXReader 对象
SAXReader reader = new SAXReader();
3 用Reader读取xml文件
Document doc=reader.read(“d:/xx.xml”);
4获取根元素
Element root=doc.getRootElemenet();
5 获取要解析的数据元素
List<Element> list=root.elements(“Book”);
6 循环遍历解析list中数据 查找要删除的元素
for(Element ele:list)
if(ele.element(“name”).getText().equals(“酸辣土豆丝”)){
root.remove(ele); //删除元素
}
7保存到文件中
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding(“utf-8”);
XMLWriter writer = new XMLWriter(new FileWriter(“D:/test1.xml”),format);
writer.write(doc);
writer.close();
xml文件特点
用途
良好的xml:
有效的xml:dtd schema
java解析xml
dom sax(Dom4j)
1xml 介绍
xml 可扩展标记语言
用途 :存储数据 交换数据 配置文件
特点:与语言无关,平台无关,操作系统无关
html 标记语言
展示网页
2xml 格式定义
xml文件有两种:
格式良好:
1 声明 2 有且只有一个根 3 标签大小写敏感 4 标签要有结束 5 嵌套正确
有效的:
有文档类型的定义
dtd schema
3 JAVA读写xml
dom 整棵树放内存中 比较耗资源 多次访问快 JDOM
sax 基于事件,省资源, 适合解析数据量大的xml dom4j
dom读的过程:
dom解析的思路
1 DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
DocumentBuilder db= fac.newDocumentBuilder();
2 Document doc=db.parse(“D:/xx.xml”);
3 找我们需要解析的元素
NodeList list = doc.getElemensByTagName(“元素名”);
4 遍历获得元素信息
for(int i=0li<list.getLength();i++)
{
Node nn= list.item(i);
NodeList childs= nn.getChildNodes();
}
增加的过程
1 DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
DocumentBuilder db= fac.newDocumentBuilder();
2 Document doc=db.parse(“D:/xx.xml”);
3 查找要增加元素的父亲元素 father
Elemenet root=doc.getDocumentElement(); 根元素
4 创建元素
Element newEle=doc.createElement(“元素名”);
newEle.setAttribute(属性名,属性值);
Element newchild= doc.createElement(“子元素”);
newchild.setTextContent(文本内容);
newEle.appendChild(newchild);
5 新创建的元素加到树种
father.appendChild(newEle);
6 保存到文件中
Transformer trans = TransformerFactory.newInstance().newTranformer();
trans.setOutputProperty(OutputKeys.ENCODING,”UTF-8″);
DomSource ds = new DomSource(doc);
StreamResult sr = new StreamResult(new FileOutputStream(“D:/xx.xml”));
trans.tranform(ds,sr);
删除的过程
1 DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
DocumentBuilder db= fac.newDocumentBuilder();
2 Document doc=db.parse(“D:/xx.xml”);
3 找我们需要解析的元素
NodeList list = doc.getElemensByTagName(“元素名”);
4 遍历查找要删除的元素
for(int i=0li<list.getLength();i++)
{
Node item = list.item(i)
if(符合)
{
item.getParentNode().removeChild(item);
}
}
5 保存到文件中
Transformer trans = TransformerFactory.newInstance().newTranformer();
trans.setOutputProperty(OutputKeys.ENCODING,”UTF-8″);
DomSource ds = new DomSource(doc);
StreamResult sr = new StreamResult(new FileOutputStream(“D:/xx.xml”));
trans.tranform(ds,sr);
修改的过程
1 DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
DocumentBuilder db= fac.newDocumentBuilder();
2 Document doc=db.parse(“D:/xx.xml”);
3 找我们需要解析的元素
NodeList list = doc.getElemensByTagName(“元素名”);
4 遍历查找要修改的元素
for(int i=0li<list.getLength();i++)
{
Node item = list.item(i)
if(符合)
{
NodeList list=item.getChildNodes();
for(遍历)
{
if 要修改的子元素
子元素.setTextContent(新值);
}
}
}
5 保存到文件中
Transformer trans = TransformerFactory.newInstance().newTranformer();
trans.setOutputProperty(OutputKeys.ENCODING,”UTF-8″);
DomSource ds = new DomSource(doc);
StreamResult sr = new StreamResult(new FileOutputStream(“D:/xx.xml”));
trans.tranform(ds,sr);
dom4j解析xml:
1 SAXReader reader = new SAXReader();
2 Document doc=reader.read(d:/xx.xml);
3 获取根元素
Element root=doc.getRootElement();
4 找根元素下我需要的子元素
List<Element> list=root.elements(“movie”); //找一组子元素
5 遍历集合类,查看每一个解析到的元素信息
for(Element ele:list)
{
//获得元素属性
String val= ele.attributeValue(“id”)
//子元素
Element name=ele.element(“name”); //找一个子元素
String nn= name.getName();
String val = name.getText();
}
dom4j增加xml:
1 SAXReader reader = new SAXReader();
2 Document doc=reader.read(d:/xx.xml);
3 查找要增加子节点的元素 aa
4 添加新元素 Element newEle=aa.addElement(“新元素名”);
newEle.addAttribute(“id”,”5″);//为新元素添加属性
Element child1= newEle.addElement(“子元素名字”);
child1.setText(子元素的文本内容);
5 字符流 输出流xml 保存修改到文件中
OutputFormate formate = new OutputFormate();
formate.setEncoding(“utf-8”);
XMLWriter writer = new XMLWriter(new FileWriter(“D:/xx.xml”), formate);
writer.write(doc);
writer.close();
dom4j删除xml:
1 SAXReader reader = new SAXReader();
2 Document doc=reader.read(d:/xx.xml);
3 获取根元素
Element root=doc.getRootElement();
4 查找我们要删的元素
for(Iterator<Element> ite= root.elementIterator();ite.hasNext; ){
Element ele= ite.next();
if(ele.attributeValue(“id”).equlas(23))
{
ele.getParent().remove(ele);
}
}
5 字符流 输出流xml 保存修改到文件中
OutputFormate formate = new OutputFormate();
formate.setEncoding(“utf-8”);
XMLWriter writer = new XMLWriter(new FileWriter(“D:/xx.xml”), formate);
writer.write(doc);
writer.close();
dom4修改xml:
1 SAXReader reader = new SAXReader();
2 Document doc=reader.read(d:/xx.xml);
3 获取根元素
Element root=doc.getRootElement();
4 查找我们要改的元素
for(Iterator<Element> ite= root.elementIterator();ite.hasNext; ){
Element ele= ite.next();
if(ele.attributeValue(“id”).equlas(23))
{
ele.element(“name”).setText(新改的值);
}
}
5 字符流 输出流xml 保存修改到文件中
OutputFormate formate = new OutputFormate();
formate.setEncoding(“utf-8”);
XMLWriter writer = new XMLWriter(new FileWriter(“D:/xx.xml”), formate);
writer.write(doc);
writer.close();
xpath:查找xml信息
让程序更有效的操作xml文件
语法:
//元素
//元素/子元素
//@属性
//元素[条件]
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/78136.html