首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

施用dom来解析XML文件

2012-12-28 
使用dom来解析XML文件car.xml:?xml version1.0 encodingUTF-8?车辆清单汽车车牌 出产时间2

使用dom来解析XML文件
car.xml:

<?xml version="1.0" encoding="UTF-8"?><车辆清单><汽车><车牌 出产时间="2009年">奥迪</车牌><产地>北京</产地></汽车></车辆清单>


car.dtd:
<?xml version="1.0" encoding="UTF-8"?><!ELEMENT 车辆清单 (汽车+)><!ELEMENT 汽车     (车牌,产地)><!ELEMENT 车牌     (#PCDATA)><!ELEMENT 产地     (#PCDATA)><!ATTLIST 车牌 出产时间 CDATA #REQUIRED> 


Demo1.java:
package cn.itcast.xml.parser.dom;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 Demo1 {public static void main(String[] args) throws Exception {//创建DOM解析器工厂[抽象工厂设计模式]DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//设置将空白字符忽略factory.setIgnoringElementContentWhitespace(true);//DOM解析器DocumentBuilder parser = factory.newDocumentBuilder();//加载XML文件,取得代表整个XML的document对象Document document = parser.parse(new File("src/cn/itcast/xml/parser/dom/car.xml"));//取得根元素Element rootElement = document.getDocumentElement();System.out.println("根元素名称:" + rootElement.getNodeName());NodeList list = rootElement.getChildNodes();System.out.println("共有" + list.getLength()+"辆汽车");for(int i=0;i<list.getLength();i++){Element element = (Element) list.item(i);String band = element.getElementsByTagName("车牌").item(0).getFirstChild().getTextContent();String place = element.getElementsByTagName("产地").item(0).getFirstChild().getTextContent();System.out.println("车牌:" + band);System.out.println("产地:" + place);System.out.println("-------------");}}}


Demo2.java:
package cn.itcast.xml.parser.dom;import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.junit.Test;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;import org.w3c.dom.Text;public class Demo2 {@Testpublic void create() throws Exception{Document document = getDocument();Element rootElement  = document.getDocumentElement();//创建元素Element carElement = document.createElement("汽车");//创建文本Text text = document.createTextNode("比亚迪");carElement.appendChild(text);//创建属性carElement.setAttribute("id","aaaaaa");rootElement.appendChild(carElement);writeToFile(document);}@Testpublic void update() throws Exception{Document document = getDocument();Element rootElement = document.getDocumentElement();NodeList list = rootElement.getChildNodes();Element carElement = (Element) list.item(3);//定位于第二辆汽车carElement.getElementsByTagName("产地").item(0).setTextContent("广州");writeToFile(document);}@Testpublic void delete() throws Exception{Document document = getDocument();Element rootElement = document.getDocumentElement();Element carElement = (Element) rootElement.getElementsByTagName("汽车").item(1);carElement.getParentNode().removeChild(carElement);writeToFile(document);}private Document getDocument() throws Exception {DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();factory.setIgnoringElementContentWhitespace(true);DocumentBuilder parser = factory.newDocumentBuilder();Document document = parser.parse(new File("src/cn/itcast/xml/parser/dom/car.xml"));return document;}private void writeToFile(Document document)throws Exception {//创建XML输出工厂TransformerFactory tf = TransformerFactory.newInstance();//创建XML输出对象Transformer t = tf.newTransformer();//源对象DOMSource source = new DOMSource(document);//目标对象StreamResult result = new StreamResult(new File("src/cn/itcast/xml/parser/dom/car.xml"));//真正输出t.transform(source,result);}}


*1,dom解析器
//DOM4J(SAXReader)
//SAX(SAXParser)
//DOM(DocumentBuilder)
DOM解析器常用API:
DocumentBuilderFactory.newInstance():创建DOM解析器工厂
factory.newDocumentBuilder():创建DOM解析器
factory.setIgnoringElementContentWhitespace(true):设置忽略空白字符[根元素]
parser.parse(new File("car.xml")):加载需要解析的XML文件
document.getDocumentElement():取得XML的根元素
rootElement.getNodeName():取得元素的名称
list.getLength():取得子元素的长度
list.item(i):取得第i个子元素,从0开始
element.getElementsByTagName("车牌"):取得该元素下以"车牌"命名的所有子元素的集合
element.getFirstChild():取得该元素下的第一个子元素
element.getTextContent():取得该元素中的字符串内容(不是对象)
document.createElement("汽车");创建新元素
Element.appendChild(carElement):向父元素填加子元素
document.createTextNode("比亚迪"):创建新文本
Element.appendChild(text):追加对象到父元素
Element.setAttribute("id","aaaaaa"):创建新属性和属性值
Element.getParentNode():取得该元素的直接父元素
Elemnet.removeChild(carElement):从父元素中删除子元素

2,web基本概念和安装配置tomcat服务器
   JavaWeb(servlet/jsp),静态Web资源(html),动态Web资源(servlet/jsp),Web服务器

3,tomcat启动时常见错误及其处理方案
   (1)没有配置JAVA_HOME
   (2)端口号被其它网络程序占用
   (3)在web服务器集群情况下,如何确定启动哪台

4,网站,web应用,web资源的关系,以及web应用的结构

*5,配置虚拟目录
   tomcat/conf/server.xml,每次改动该文件后,需要重新启动tomcat。
   <Context path="/虚拟目录名" docBase="真实web应用存储的位置"/>
   如果将web应用直接放在webapps/目录下,tomcat服务器会自动将位于该目录下的web应用名映射虚拟目录(tomcat6)
   如果在非webapps/目录下放置web应用,必须手工映射虚拟目录(tomcat6)
   path=""
   docBase=""
   unpackWAR="true"当tomcat启动时,自动将位于webapps/目录中的WAR文件解压",默认为true
   reloadable="true/false,tomcat服务器自动检查内容是否有更新,如果有,在true情况下,自动加载最重内容,无需手工
               重启。在false情况下,必须手工重启"。[webapps/应用名/WEB-INF/lib或classes]
               开发阶段最好使用true,在上线阶段最好使用false。

  
*6,配置虚拟网站
   (1)浏览器访问服务器的原理
   (2)在tomcat中配置多个虚拟网站

7,web架构
B/S                    C/S
浏览器/服务器          客户端/服务器

区别:


B/S
对显示要求不高
更新由服端完成
客户端和服务端间接通信,理论上支持无限客户端
客户端只要有浏览器,要求不高
服务器对安全要求可以分散,因此相对而且要求较低
服务器扩展性较高
相对速度较慢


C/S
对显示要求高
更新由客户端完成
客户端和服务端直接通信,理论上支持有限客户端
客户端要求较高
服务器对安全要求较高
服务器扩展较较低
相对速度较快















热点排行