当前位置: 首页 > news >正文

openwrt做网站网推所

openwrt做网站,网推所,潍坊网站建设策划,温州网站建设方案推广什么是 XML? XML 指可扩展标记语言#xff08;EXtensible Markup Language#xff09;XML 是一种标记语言#xff0c;很类似 HTMLXML 的设计宗旨是传输数据#xff0c;而非显示数据XML 标签没有被预定义。您需要自行定义标签。XML 被设计为具有自我描述性。XML 是 W3C 的推… 什么是 XML? XML 指可扩展标记语言EXtensible Markup LanguageXML 是一种标记语言很类似 HTMLXML 的设计宗旨是传输数据而非显示数据XML 标签没有被预定义。您需要自行定义标签。XML 被设计为具有自我描述性。XML 是 W3C 的推荐标准 对于xml文件没有被定义好的标签所有的标签都是用户自己定义在读取解析的时候根据标签可以获得想要的值 解析xml文件一共有四种方式分别是 DOMSAXJDOMDOM4J 下面详细的介绍这几种方式 一、DOMDocument Object Model Dom解析是将xml文件全部载入组装成一颗DOM树树状结构然后通过节点以及节点之间的关系来解析xml文件下面结合这个xml文件来进行dom解析。由于DOM这种在加载的时候需要把文件全部加载进内存才可以进行解析的方式也带来了问题在xml文件小的情况下可以使用当一个xml文件相当大的时候对计算机资源的消耗也是一个不小的开销 xml文件 schoolstudentno1001/noname小明/namescore20/score/studentstudentno1002/noname小红/namescore80/score/student /school 实例 package demo_xml;import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException;import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.IOException;public class Dom {public static void main(String[] args) {try {//创建解析器DocumentBuilderFactory dbf DocumentBuilderFactory.newInstance();DocumentBuilder db dbf.newDocumentBuilder();//把xml文件加载进内存Document document db.parse(E:\\IntelliJ IDEA\\jvm\\src\\test.xml);//获取文件中的根节点NodeList root document.getChildNodes();for (int i 0; i root.getLength(); i) {Node childNodes root.item(i);//通过根节点获取子节点NodeList childNodes1 childNodes.getChildNodes();for (int j 0; j childNodes1.getLength(); j) {Node node childNodes1.item(j);//获取子节点的子节点NodeList value node.getChildNodes();//遍历各个节点的属性值for (int k 0; k value.getLength(); k) {if(value.item(k).getNodeName() ! #text) {System.out.println(value.item(k).getNodeName() : value.item(k).getTextContent());}}System.out.println();}}} catch (ParserConfigurationException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}} }二、SAXSimple API for XML sax这种解析方式在官方的解释是类似于流媒体的方式。我们可以简单的总结为sax方式可以做到一边扫面文档一边解析文档不用把文件加载到内存中相比于DOM解析方式SAX方式对于大型的文件是一种很好的解决办法减少了对内存的消耗。还有就是SAX解析方式是一种基于事件的方式在解析xml文件的时候就是触发了一系列的事件当遇到用户给定的标签的时候会停止解析这样在时间和空间上都是优于DOM解析的DOM解析需要把文档全部加载进内存才能开始解析 要使用SAX解析首先要创建触发器这个类要创建这个类首先需要继承DefaultHandler重写方法 xml文件被SAX解析器载入由于SAX解析是按照xml文件的顺序来解析当最开始读取xml文档的时候会调用startDocument()方法当读入school的时候由于它是个ElementNode所以会调用startElement(String uri, String localName, String qName, Attributes attributes) 方法其中第二个参数就是节点的名称注意由于有些环境不一样有时候第二个参数有可能为空所以可以使用第三个参数因此在解析前先调用一下看哪个参数能用第4个参数是这个节点的属性。这里我们不需要这个节点所以从student这个节点开始当读入时调用startElement(....)方法然后在no标签的地方会调用characters(char[] ch, int start, int length)方法Sax解析器会把它认为是一个TextNode。但是这个空白不是我们想要的数据我们是想要no节点下的文本信息。这就要定义一个记录当上一节点的名称的TAG在characters(.....)方法中判断当前节点是不是name是再取值才能取到值 代码 package demo_xml;import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler;import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream;public class Sax {public static void parserXml(String fileName) {SAXParserFactory saxfac SAXParserFactory.newInstance();try {SAXParser saxparser saxfac.newSAXParser();InputStream is new FileInputStream(fileName);saxparser.parse(is, new MySaxHandler());} catch (ParserConfigurationException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {Sax.parserXml(E:\\IntelliJ IDEA\\jvm\\src\\test.xml);} } class MySaxHandler extends DefaultHandler {boolean hasAttribute false;Attributes attributes null;Overridepublic void startDocument() throws SAXException {System.out.println(文档解析);}Overridepublic void endDocument() throws SAXException {System.out.println(文档结束);}Overridepublic void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException {if (qName.equals(users)) {return;}if (qName.equals(user)) {return;}if (attributes.getLength() 0) {this.attributes attributes;this.hasAttribute true;}}Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {if (hasAttribute (attributes ! null)) {for (int i 0; i attributes.getLength(); i) {System.out.print(attributes.getQName(0) : attributes.getValue(0));}}}Overridepublic void characters(char[] ch, int start, int length)throws SAXException {System.out.print(new String(ch, start, length));} } 三、JDOMJava-based Document Object Model JDOM也是将xml文件构建成一个树状结构实现解析所以代码和DOM很像但是 JDOM自身不包含解析器。它通常使用SAX2解析器来解析和验证输入XML文档所以可以说JDOM是DOM和SAX的一个结合体也差不多把SAX和DOM的功能有效地结合起来。实现了解析xml文档的功能。在代码中我们可以看到SAX和DOM解析代码的片段 package demo_xml;import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder;import java.util.List;public class Jdom {public static void main(String[] args) throws Exception {//构建加载器加载xml文档SAXBuilder builder new SAXBuilder();Document document builder.build(E:\\IntelliJ IDEA\\jvm\\src\\test.xml);//获取根节点Element root document.getRootElement();//通过根节点获取子节点的集合List childList root.getChildren(student);//遍历集合for (int i 0; i childList.size(); i) {Element childs (Element) childList.get(i);//通过上一级节点获取子节点List child childs.getChildren();for (int j 0; j child.size(); j) {System.out.println(((Element) child.get(j)).getName() : ((Element) child.get(j)).getValue());}System.out.println();}} }四、DOM4JDocument Object Model for Java DOM4J是目前使用最广泛的hibernate框架使用的解析方式就是DOM4JDOM4J使用接口和抽象基本类方法在代码上也容易理解在使用DOM4J时需要下载jar包 package demo_xml;import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader;import java.io.File; import java.net.MalformedURLException; import java.util.Iterator;public class Dom4j {public static void main(String[] args) {//加载解析器File inputXml new File(E:\\IntelliJ IDEA\\jvm\\src\\test.xml);SAXReader saxReader new SAXReader();try {//获取文档内容Document document saxReader.read(inputXml);//获取根节点Element root document.getRootElement();for (Iterator i root.elementIterator(); i.hasNext();) {Element childList (Element) i.next();for (Iterator j childList.elementIterator(); j.hasNext();) {Element node (Element) j.next();System.out.println(node.getName() : node.getText());}System.out.println();}} catch (DocumentException e) {System.out.println(e.getMessage());} catch (MalformedURLException e) {e.printStackTrace();}} }转载于:https://www.cnblogs.com/duzhentong/p/7816534.html
http://www.dnsts.com.cn/news/9965.html

相关文章:

  • 自己 做网站重庆城乡规划和建设局网站
  • 营销网站结构平台商城网站开发
  • 18.ppt网站是谁做的电子工程网mcu
  • 深圳搜豹网站建设公司广州建设网站公司哪个济南兴田德润有活动吗
  • 广安网站设计公司深圳做网站 汉狮网络
  • 网站关键词优化网站推广深圳店铺设计
  • php网站上线设计网站页面要多少钱
  • 海口模板网站建站wordpress 文章发布到指定页面
  • 手机网站建设事项买网站做seo
  • 重庆推广网站排名价格做网站用国内还是国外的vps
  • 门户网站建设费用科目电商运营怎么做数据分析
  • 网站流量少怎么办网站开发太简单了框架
  • 郑州正规公司网站建设服务一个虚拟主机可以做几个网站吗
  • 钓鱼网站盗号下载附近有木有做网站
  • 郴州网站建设培训增加网站产品
  • 怎么建立一个网站放图片全国证书统一查询证书
  • 网站怎么做音乐外链ios+wordpress
  • 企业中英文网站建设珠海网站建设熊掌号
  • 宁安网站建设华为荣耀官网手机旗舰店
  • 马尼拉做网站营销网站首页设计
  • 提交网站入口网页制作对联
  • 南京网站开发询南京乐识wordpress添加广告联盟
  • 网站建站怎么报价东莞横沥理工学校
  • 做电脑系统网站如何进行企业营销型网站建设规划
  • 网站后台是怎么做的网站功能组件
  • 免费的网站登录模板网站怎么做移动的窗口
  • 郴州网站建设网站Wix网站开发 工作室
  • 网站建设公司-信科网络seo培训网的优点是
  • 网站基建建设一个人可以做几个网站负责人
  • 网站设计一般是什么专业网站开发合同甲方的权利