XML与web开发-01- 在页面显示和 XML DOM 解析

前言: 关于 xml 特点和基础知识,可以菜鸟教程进行学习:http://www.runoob.com/xml/xml-tutorial.html
本系列笔记,主要介绍 xml 在 web 开发时需要了解的知识

XML 在页面显示数据

 XML 指可扩展标记语言(eXtensible Markup Language)。
 XML 被设计用来传输和存储数据。

一、怎么在页面上只显示数据?

 大家在网页上可能都见过这样的 xml 文件:

1483449-20181103225816989-1322569347.jpg

 这是没有任何样式的 xml,打开 tomcat 什么的服务器,在网页上浏览 xml 文件的样式,它的源码是:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><addresslist><linkman><name>肖朋伟</name><id>2236</id><company>null</company><email>xpwi@qq.com</email><tel>66666</tel></linkman>
</addresslist>

 怎样在页面上只显示文字,并加上特定的样式呢?那就要用到 css 了

(1)先自己写一个 css 样式:

name{display: block;color: brown;font-size: 20pt;font-weight: bold;
}id, company, email, tel, site{display: block;color: black;font-size: 14pt;font-weight: normal;}

(2)在 xml 文件中引入这个 css 文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- 加上样式,注意路径 -->
<?xml-stylesheet type="text/css" href="../css/first.css" ?><addresslist><linkman><name>肖朋伟</name><id>2236</id><company>null</company><email>xpwi@qq.com</email><tel>66666</tel></linkman>
</addresslist>

(3)就会这样显示了:

1483449-20181103230750348-552094879.jpg

(4)然后,xml 也可以像 html 标签那样,加属性,例如:

<tel id = "userTel">66666</tel>

XML与web开发-01- xml 解析

在 xml 文件,更多的用来描述信息的内容,
所以在得到一个 XML 文档后,应该利用程序按照其中元素的定义名称取出对应内容,
这样的操作就称为 xml 解析。

W3C 定义了 SAX 和 DOM 两种解析方式

XML - DOM 解析操作

在应用程序中,基于 DOM 的 XML 分析器将一个 XML 文档转换成一个对象模型的集合,通常称为 DOM 树
应用程序正是通过对这个对象模型的操作,来实现对 XML 文档数据的操作。

准备一个 xml 文件(路径是 D:\xml\first.xml,下面要用目录,注意):

<?xml version="1.0" encoding="UTF-8" standalone="no"?><addresslist><linkman><name>肖朋伟</name><id>2236</id><company>null</company><email>xpwi@qq.com</email><tel>66666</tel></linkman>
</addresslist>

java 解析文件:

【注意】:

1.目录,我是新建一个包 xml ,再新建一个 dom.java
2.注意解析的 xml 路径,要根据自己的路径设置
3.如果自己写代码,注意一下导包,Document,是 org.w3c.dom.Document

// 目录,我是新建一个包 xml ,再新建一个 dom.java
package xml;import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;//注意 Document,是 org.w3c.dom.Document
//默认导包会是 javax 那个,注意一下
import org.w3c.dom.Document;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.File;
import java.io.IOException;public class dom {public static void main(String[] args){//(1)建立 DocumentBuilderFactory,用来得到 DocumentBuilderDocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//(2)通过 DocumentBuilderFactory,来得到 DocumentBuilderDocumentBuilder builder = null;try{builder = factory.newDocumentBuilder();}catch (ParserConfigurationException e){e.printStackTrace();}//(3)定义Document doc = null;try {//读取指定路径的 xml 文件,要先有一个这样的文件doc = builder.parse("D://xml/" + File.separator + "first.xml");} catch (SAXException e){e.printStackTrace();} catch (IOException e){e.printStackTrace();}//(4)查找 name 的节点NodeList nl = doc.getElementsByTagName("name");//(5)输出 NodeList 中第一个子节点中文本节点的内容System.out.println("姓名:" + nl.item(0).getFirstChild().getNodeValue());}}

运行就会在控制台打印:

1483449-20181104000235609-1814728293.jpg

DOM 解析4个核心操作接口:

  • Document:此接口代表了整个 XML 文档,代表整个 DOM 树的树根,提供了对文档中的数据进行访问和操作的入口,
    通过 Document 节点可以访问 XML 文件中所有的元素内容。Document 接口的常用方法如下表:

  Document 接口的常用方法

No.
方 法
类 型
描 述
1
public NodeList getElementsByTagName(String name)
普通
取得指定节点名称的 NodeList
2
public Element createElement(String tagName)throws DOMException
普通
创建一个指定名称的节点
3
public Text createTextNode(String data)
普通
创建一个文本内容节点
4
Element createElement(String tagName)throws DOMException
普通
创建一个节点元素
5
public Attr createAttribute(String name)throws DOMException
普通
创建一个节点元素
  • Node:此接口在整个 DOM 树中具有剧组轻重的地位,DOM 操作的核心接口中有很大一部分是
    从 Node 接口继承过来的。例如,Document、Element、Atrr 等接口

  Node 接口的常用方法

No.
方 法
类 型
描 述
1 Node appendChild(Node newChild)throws DOMException 普通 在当前节点下增加一个新节点
1 Node appendChild(Node newChild)throws DOMException 普通 在当前节点下增加一个新节点
1 Node appendChild(Node newChild)throws DOMException 普通 在当前节点下增加一个新节点
1 Node appendChild(Node newChild)throws DOMException 普通 在当前节点下增加一个新节点
1 Node appendChild(Node newChild)throws DOMException 普通 在当前节点下增加一个新节点
1 Node appendChild(Node newChild)throws DOMException 普通 在当前节点下增加一个新节点
1 Node appendChild(Node newChild)throws DOMException 普通 在当前节点下增加一个新节点

转载于:https://www.cnblogs.com/xpwi/p/9902741.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

酷安应用市场php源码,酷安应用市场 v11.0.3-999 去广告极限精简版

酷安&#xff0c;真实有趣的数码社区。酷安app&#xff0c;国内安卓应用市场客户端&#xff0c;应用资源丰富&#xff0c;应用开发者水准高&#xff0c;应用无首发Logo&#xff0c;原汁原味上架&#xff0c;得到了安卓用户群广泛认可。有人说现在的酷安市场(酷安网)没有以前那么…

chromebook刷机_如何将网站添加到您的Chromebook架子上

chromebook刷机Bookmarks are great to keep your favorite sites nearby, but they aren’t the fastest option out there. Instead, why not add shortcuts for your favorite websites right on the Chromebook shelf? 书签可以很好地将您喜欢的网站保留在附近&#xff0c…

Locktopus锁定iOS设备上的单个应用程序

If you want to share a cool game on your iOS device but not let everyone read your email, Locktopus offers a simple app-by-app lockdown solution. 如果您想在iOS设备上共享一个很棒的游戏&#xff0c;但又不想让所有人都阅读您的电子邮件&#xff0c;那么Locktopus提…

视频翻录_将DVD解密并复制到硬盘驱动器而无需翻录

视频翻录Have you ever wanted to make backup copies of your DVDs but didn’t want to mess with confusing DVD ripping software? Today, we’ll look at drop dead simple method to decrypt DVDs on the fly with DVD43 so you can easily copy them to your hard dri…

详解面向对象、构造函数、原型与原型链

详解面向对象、构造函数、原型与原型链 为了帮助大家能够更加直观的学习和了解面向对象&#xff0c;我会用尽量简单易懂的描述来展示面向对象的相关知识。并且也准备了一些实用的例子帮助大家更加快速的掌握面向对象的真谛。 jQuery的面向对象实现封装拖拽简易版运动框架封装这…

如何将Wii遥控器用作陀螺仪鼠标

If you have a spare Nintendo Wii remote with the Motion Plus add-on, you can use it to control your Windows PC from across the room. Here’s how to get it working in a couple of easy steps. 如果您有带Motion Plus附加组件的备用Nintendo Wii遥控器&#xff0c;则…

php 自带 web server 如何重写 rewrite .htaccess

为什么80%的码农都做不了架构师&#xff1f;>>> <?php // filename: route.php if (preg_match(/\.(?:png|jpg|jpeg|gif|css|js)$/, $_SERVER["REQUEST_URI"])) {return false; } else {include __DIR__ . /index.php; } 更好的写法&#xff1a; &l…

sci-hub谷歌插件_Google Home Hub具有隐藏屏幕设置菜单

sci-hub谷歌插件You can adjust the brightness or set an alarm on your Google Home Hub with a voice command. But if you’re trying to be quiet or there’s a lot of background noise, you can also do these things using a hidden Screen Settings menu. 您可以使用…

二叉树的前序、中序、后序遍历与创建

#include <iostream> #include <string> #include <stack> using namespace std; struct node; typedef node *pNode; struct node { char data; pNode left, right; }; string line; string::iterator it; // 前序扩展序列建立二叉树 void plan…

flex-2

1、 2、 justify&#xff1a;整理版面 3、 4、归纳 justify-content&#xff1a;flex-start&#xff08;默认&#xff09;、center、flex-end 下面还会提到剩下的两种项目在主轴上对齐方式&#xff1a; space-between:两端对齐&#xff08;项目间距离相等&#xff09; space-ar…

火狐标签在中间_在Firefox中保留未使用的标签

火狐标签在中间If you have a lot of content heavy webpages open in Firefox, it soon adds up on memory usage. The BarTab extension puts unused tabs on hold and keeps them unloaded until you are ready to access them. 如果您在Firefox中打开了大量内容繁重的网页&…

iphone手机备忘录迁移_如何在iPhone和iPad上使用语音备忘录

iphone手机备忘录迁移Whether you’re recording a voice message as a reminder of that million dollar idea or catching a snippet of a new song you know you’ll forget, the iPhone and iPad’s Voice Memos app is the perfect tool. 无论您是录制语音消息来提醒这一百…

php 执行文件tar打包,利用tar for windows对大量文件进行快速打包

近期将某些网站换服务器&#xff0c;由于网站数量巨大&#xff0c;加上附件和静态页&#xff0c;文件数量异常多&#xff0c;考虑先打包然后直接传过去。起初尝试用winrar打包&#xff0c;但是发现即使选择”仅储存”速度仍然慢到无法接受&#xff0c;后来想到了tar&#xff0c…

DDD~领域事件中使用分布式事务

对于一个聚合来说&#xff0c;它可能会被附加很多事件&#xff0c;这里我们叫它领域事务&#xff0c;因为一个聚会我们可以把它理解成一个领域&#xff0c;一个业务。对于领域事件不清楚的同学可以看看我的这篇文章《DDD~领域事件与事件总线》&#xff0c;里面有详细的说明&…

如何在PowerPoint中制作打字机或命令行动画

Adding quirky animations to your Microsoft PowerPoint presentation gives your slideshow a little extra life. Not only will adding a typewriter or command line animation entertain your audience, but it will also keep them focused on the text. 在您的Microsof…

canvas 平滑运动_什么是电视上的运动平滑?人们为什么讨厌它?

canvas 平滑运动Willy Barton/Shutterstock.com威利巴顿/Shutterstock.comIf you’ve just bought a new TV, you might be wondering why everything you watch feels eerily sped up and smooth, like you’re watching a live broadcast all the time. You’re not imaginin…

linux guard什么进程,使用linux系统性能监控工具KSysguard监控远端主机介绍

KDE System Guard默认的窗口前端图形界面使用传感器(sensors)获得要显示的信息。传感器返回的可以是一个简单的数值或更复杂的信息如表格。针对不同的信息类型都提供了一个或多个显示界面。这些显示界面被组织在多个工作表中&#xff0c;工作表可以独立存储和加载。KSysguard主…

macbook充电_如何判断MacBook是否正在充电

macbook充电2p2play / Shutterstock2p2play / ShutterstockForgetting to charge your MacBook properly overnight can leave you with a headache in the morning. And if you’re troubleshooting a broken MacBook, checking if it’s able to charge is one way to rule o…

chrome同步_如何在Chrome中打开或关闭同步

chrome同步Google Chrome lets you sync up your Google account to your browser across any device. When enabled, bookmarks, history, passwords, extensions, and themes—among many other settings—sync from your Google account, creating a seamless experience no…

linux系统输入指令,详解linux系统输入输出管理和vim的常用功能

####系统中输入输出的管理####1.理解系统的输入输出重定向输入重定向是指把文件导入到命令中&#xff0c;而输出重定向则是把原本要输出到屏幕的数据信息写入到指定文件中。2.管理输入输出的符号##输出重定向> ##重定向正确输2> ##重定向错误输出&> …