web框架学习前复习——xml(1)
来源:互联网 发布:什么是网络在线客服 编辑:程序博客网 时间:2024/05/16 19:09
xmlxml声明(必须出现在文档的第一行) 示例:<?xml version="1.0" encoding="UTF-8"?> version:属性。取值,1.0.当前使用的XML的版本 encoding:当前xml文件使用的编码。默认是UTF-8 standalone:属性说明文档是否独立,可不写xml标签为自定义标签,由一个根标签嵌套子标签。不可交叉嵌套与html相同。标签的写法有两种(与html一致)
包含标签主体:<mytag>some content</mytag>不含标签主体:<mytag/>
CDATA是Character Data的缩写。作用:把标签当做普通文本内容;
<![CDATA[ <itcast>www.itcast.cn</itcast>//此时被当做文本而非标签语言]]>
编写DTD的方式有两种一种是直接写在xml文档中,如:
<?xml version=”1.0” encoding=”gbk”?><!DOCTYPE 书架(根元素)[ <!ELEMENT 书架 (书+)>//根元素包含的子元素书最少一个 <!ELEMENT 书 (书名,作者,售价)>//子元素必须包含的子标签 <!ELEMENT 书名 (#PCDATA)>//PCDATA表示元素的主体内容为普通文本 <!ELEMENT 作者 (#PCDATA)> <!ELEMENT 售价 (#PCDATA)> ]><书架>
第二种方式为外部引入。dtd作为单独的文件存在。文件扩展名.dtd,文件必须用UTF-8编码保存到磁盘上。引入方式为:
//dtd文件在本地:<!DOCTYPE 根元素 SYSTEM “dtd文件的地址”>//dtd文件在外地(网上):<!DOCTYPE 根元素 PUBLIC “dtd的名称” “dtd的路径”>//示例:<?xml version="1.0" encoding="gbk"?><!DOCTYPE TVSCHEDULE SYSTEM "tet.dtd"><TVSCHEDULE NAME="CCTV"> <CHANNEL CHAN="zh"> <BANNER>文本</BANNER> <DAY> <DATE>文本</DATE> <HOLIDAY>文本</HOLIDAY> </DAY> <DAY> <DATE>文本</DATE> <PROGRAMSLOT> <TIME>文本</TIME> <TITLE>文本</TITLE> <DESCRIPTION>文本</DESCRIPTION> </PROGRAMSLOT> </DAY> </CHANNEL></TVSCHEDULE>
JAXP对xml文件进行DOM方式的解析
//xml文本<?xml version="1.0" encoding="UTF-8" standalone="no"?><State Code="37" Name="山东" description="省会"> <City> <Name>济南</Name> <Region>历下区</Region> </City> <City>青岛</City> <City>威海</City> <City>泰安</City></State>
import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;public class JaxpDemo { public static void main(String[] args) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//得到创建解析器的工厂:DocumentBuilderFactory DocumentBuilder builder = factory.newDocumentBuilder();//通过工厂得到解析器:DocumentBuilder Document document = builder.parse("xml文件路径");//加载xml文件:得到了Document对象 } public static void test1(Document document){//得到某个具体的节点内容 NodeList nl = document.getElementsByTagName("City");//得到所有的City元素, Node node = nl.item(2);//索引从0开始 System.out.println(node.getTextContent());//打印获得节点的主体内容 } public static void test2(Document document){//遍历所有元素节点。 Node rootNode = document.getElementsByTagName("State").item(0); treewalk(rootNode); } public static void treewalk(Node node){//递归 if(node.getNodeType()==Node.ELEMENT_NODE){//是一个元素节点 System.out.println(node.getNodeName());//打印元素的名称 } NodeList nl = node.getChildNodes();//看看他有没有孩子 for(int i=0;i<nl.getLength();i++){ Node n = nl.item(i); treewalk(n);//递归 } } public static void test3(Document document) throws Exception{//修改某个元素节点的主体内容 Node secondCityNode = document.getElementsByTagName("City").item(1);//找到第2个City元素 secondCityNode.setTextContent("威海");//设置主体内容为:威海 //把内存中的Document写到xml文件中 TransformerFactory tf = TransformerFactory.newInstance(); Transformer ts = tf.newTransformer(); ts.transform(new DOMSource(document), new StreamResult("src/LocList.xml")); } public static void test4(Document document) throws Exception{//向指定元素节点中增加子元素节 Element e = document.createElement("City");//<City></City>//创建新元素 e.setTextContent("烟台");//<City>烟台</City> Node rootNode = document.getElementsByTagName("State").item(0); rootNode.appendChild(e);//把新元素添加到State最后 //把内存中的Document写到xml文件中 TransformerFactory tf = TransformerFactory.newInstance(); Transformer ts = tf.newTransformer(); ts.transform(new DOMSource(document), new StreamResult("src/LocList.xml")); } public static void test5(Document document) throws Exception{//向指定元素节点上增加同级元素节点 Element e = document.createElement("City");//创建新元素 e.setTextContent("青岛"); //调用inertBefore插入新节点:必须由父节点来调用 Node secondNode = document.getElementsByTagName("City").item(1); secondNode.getParentNode().insertBefore(e, secondNode); //把内存中的Document写到xml文件中 TransformerFactory tf = TransformerFactory.newInstance(); Transformer ts = tf.newTransformer(); ts.transform(new DOMSource(document), new StreamResult("src/LocList.xml")); } public static void test6(Document document) throws Exception{//删除指定元素节点 Node ytNode = document.getElementsByTagName("City").item(4);//得到烟台节点 ytNode.getParentNode().removeChild(ytNode);//用父节点删除 //把内存中的Document写到xml文件中 TransformerFactory tf = TransformerFactory.newInstance(); Transformer ts = tf.newTransformer(); ts.transform(new DOMSource(document), new StreamResult("src/LocList.xml")); } public static void test7(Document document) throws Exception{//操作XML文件属性 Node stateNode = document.getElementsByTagName("State").item(0);//看成元素 if(stateNode.getNodeType()==Node.ELEMENT_NODE){ Element e = (Element)stateNode; System.out.println(e.getAttribute("Name")); } } public static void test8(Document document) throws Exception{//8、添加属性 Node stateNode = document.getElementsByTagName("State").item(0);//看成元素 if(stateNode.getNodeType()==Node.ELEMENT_NODE){ Element e = (Element)stateNode; e.setAttribute("description", "省会"); } //把内存中的Document写到xml文件中 TransformerFactory tf = TransformerFactory.newInstance(); Transformer ts = tf.newTransformer(); ts.transform(new DOMSource(document), new StreamResult("src/LocList.xml")); }}
0 0
- web框架学习前复习——xml(1)
- web框架学习前复习——xml(2)
- web框架学习前复习——html
- web框架学习前复习——css
- web框架学习前复习——JS
- web框架学习前复习——jsDom
- web框架学习前复习——http协议
- web框架学习前复习——Servlet
- web框架学习前复习——JSP
- web框架学习前复习——ajax
- web框架学习前复习——动态代理
- web框架学习前复习——filter
- web框架学习前复习——mysql命令
- web框架学习前复习——JDBC
- Web前端复习——Javasvript学习(面向对象)
- java web学习前的复习HTML网页知识
- Web前端复习——Javascript复习(2)
- Web前端复习——JavaScript复习(DOM)
- Spring
- 列表操作
- Java (while结构)
- Spring02
- 初学DP
- web框架学习前复习——xml(1)
- Face Detection with the Faster R-CNN(数据集标注对比研究报告 )
- Java容器三:HashMap
- RoboCup中使用Gazebo和ROS
- android 压缩和解压文件
- 【codevs 3538】奇怪的函数
- Shiro——shiro架构
- IOS Dev Intro - IOS Interview QAs
- 要能真正提升产品开发团队的效率与质量, 你必需要懂得如何 ”设计” 开发团队所需要的实践或框架