xml文件怎么打开,xml文件打开全是代码怎么办

什么是XML?XML:extensiablemarkuplanguage被称作可扩展标记语言XML简单的历史介绍:gml-sgml-html-xmlgml(通用标记语言)–在不同的机器进行通信的数据规

什么是XML?

XML:extensiable markup language 被称作可扩展标记语言

XML简单的历史介绍:

gml->sgml->html->xml

gml(通用标记语言)–在不同的机器进行通信的数据规范

sgml(标准通用标记语言)

html(超文本标记语言)

为什么我们需要使用XML呢?

①我们没有XML这种语言之前,我们使用的是String作为两个程序之间的通讯!现在问题就来了,如果我们传输的是带有关系型结构的数据,String怎么表达呢?String对关系型数据不擅长,要是描述起来也难免会有歧义的时候!关系型数据如图下所示:

②HTML语言本身就有缺陷:

**标记都是固定的,不能自定义。HTML语言中有什么标记就只能用什么标记 **

HTML标签本身就缺少含义(tr标签里面什么内容都能放进去,不规范!!)

HTML没有实现真正的国际化

XML文件就解决了以上的问题了,如果使用XML描述上述图片的关系,是非常简单的!

xml文件怎么打开

<?xml version="1.0" encoding="UTF-8" ?><中国> <北京> <海淀></海淀> <丰台></丰台> </北京> <湖南> <长沙></长沙> <岳阳></岳阳> </湖南> <湖北> <武汉></武汉> <荆州></荆州> </湖北></中国>

XML文件还能使用浏览器打开:

我们可以发现XML是可以描述很复杂的数据关系的

XML的用途

①:配置文件(例子:Tomcat的web.xml,server.xml……),XML能够非常清晰描述出程序之间的关系

②:程序间数据的传输,XML的格式是通用的,能够减少交换数据时的复杂性!

③:充当小型数据库,如果我们的数据有时候需要人工配置的,那么XML充当小型的数据库是个不错的选择,程序直接读取XML文件显然要比读取数据库要快呢!

XML的技术架构

XML被设计为“什么都不做”,XML数据或XML文档只用于组织、存储数据,除此之外的数据生成、读取、传送、存取等等操作都与XML本身无关!

于是乎,想要操作XML,就需要用到XML之外的技术了:

为XML定规则:现在一般使用DTD或Schema技术,当然了Schema技术更为先进!

解析XML的数据:一般使用DOM或者SAX技术,各有各的优点

提供样式:XML一般用来存储数据的,但设计者野心很大,也想用来显示数据(但没人用XML来显示数据),就有了XSLT(eXtensiable Stylesheet Language Transformation)可扩展样式转换语言

XML语法:

文档

XML

version----版本

encoding--编码

standalone--独立使用--默认是no。standalone表示该xml是不是独立的,如果是yes,则表示这个XML文档时独立的,不能引用外部的DTD规范文件;如果是no,则该XML文档不是独立的,表示可以引用外部的DTD规范文档。

正确的文档

xml文件打开全是代码怎么办,<?xml version="1.0" encoding="utf-8" standalone="no"?>

元素

首先在这里说明一个概念:在XML中元素和标签指的是同一个东西!不要被不同的名称所迷惑了!

元素中需要值得注意的地方:

XML元素中的出现的空格和换行都会被当做元素内容进行处理

每个XML文档必须有且只有一个根元素

元素必须闭合

大小写敏感

不能交叉嵌套

不能以数字开头

看起来好像有很多需要值得注意的地方,其实只需要记住:XML的语法是规范的!不要随意乱写!

属性

属性是作为XML元素中的一部分的,命名规范也是和XML元素一样的!

<!--属性名是name,属性值是china--><中国 name="china"></中国>

注释

注释和HTML的注释是一样的

<!---->

CDATA

在编写XML文件时,有些内容可能不想让解析引擎解析执行,而是当作原始内容处理。遇到此种情况,可以把这些内容放在CDATA区里,对于CDATA区域内的内容,XML解析程序不会处理,而是直接原封不动的输出

语法:

<![CDATA[ ...内容]]>

转义字符

对于一些单个字符,若想显示其原始样式,也可以使用转义的形式予以处理。

处理指令

处理指令,简称PI (processing instruction)。处理指令用来指挥解析引擎如何解析XML文档内容。

例如:

在XML文档中可以使用xml-stylesheet指令,通知XML解析引擎,应用css文件显示xml文档内容。

<?xml-stylesheet type="text/css" href="1.css"?>

XML代码:

<?xml version="1.0" encoding="UTF-8" ?><?xml-stylesheet type="text/css" href="1.css"?><china> <guangzhou> 广州 </guangzhou> <shenzhen> 深圳 </shenzhen></china>

CSS代码:

guangzhou{ font-size: 40px;}

效果:

JDK中的XML API

①:JAXP(The Java API For XML Processing):主要负责解析XML

②:JAXB(Java Architecture for XML Binding):主要负责将XML映射为Java对象

什么是XML解析

前面XML章节已经说了,XML被设计为“什么都不做”,XML只用于组织、存储数据,除此之外的数据生成、读取、传送等等的操作都与XML本身无关!

XML解析就是读取XML的数据!

XML解析方式

XML解析方式分为两种:

①:dom(Document Object Model)文档对象模型,是W3C组织推荐解析XML的一种方式

②:sax(Simple API For XML),它是XML社区的标准,几乎所有XML解析器都支持它!

XML解析操作

从上面的图很容易发现,应用程序不是直接对XML文档进行操作的,而是由XML解析器对XML文档进行分析,然后应用程序通过XML解析器所提供的DOM接口或者SAX接口对分析结果进行操作,从而间接地实现了对XML文档的访问!

常用的解析器和解析开发包的关系如下所示:

为什么有3种开发包?

jaxp开发包是JDK自带的,不需要导入开发包。

由于sun公司的jaxp不够完善,于是就被研发了Jdom。XML解析如果使用Jdom,需要导入开发包

dom4j是由于Jdom的开发人员出现了分歧,dom4j由Jdom的一批开发人员所研发。XML解析如果使用Jdom,需要导入开发包【现在用dom4j是最多的!】

jaxp

虽然jaxp解析XML的性能以及开发的简易度是没有dom4j好,但是jaxp不管怎么说都是JDK内置的开发包,我们是需要学习的!

DOM解析操作

简单来说:DOM解析会把XML文档加载到内存中,生成DOM树的元素都是以对象的形式存在的!我们操作这些对象就能够操作XML文档了!

下面这样图就能很好地说明了,是怎么样生成与XML文档内容对应的DOM树!

既然XML文档的数据是带有关系型的,那么生成的DOM树的节点也是有关系的:

位于一个节点之上的节点是该节点的父节点(parent)

一个节点之下的节点是该节点的子节点(children)

同一层次,具有相同父节点的节点是兄弟节点(sibling)

一个节点的下一个层次的节点集合是节点后代(descendant)

父、祖父节点及所有位于节点上面的,都是节点的祖先(ancestor)

在DOM解析中有几个核心的操作接口:

Document【代表整个XML文档,通过Document节点可以访问XML文件中所有的元素内容!】

Node【Node节点几乎在XML操作接口中几乎相当于普通Java类的Object,很多核心接口都实现了它,在下面的关系图可以看出!】

NodeList【代表着一个节点的集合,通常是一个节点中子节点的集合!】

NameNodeMap【表示一组节点和其唯一名称对应的一一对应关系,主要用于属性节点的表示(书上说是核心的操作接口,但我好像没用到!呃呃呃,等我用到了,我再来填坑!)】

节点之间的关系图:

有人可能会很难理解,为什么Document接口比Node接口还小,呃呃呃,我是这样想的:一个Document由无数个Node组成,这样我也能把Document当成是Node呀!如果实在想不通:人家都这样设计了,你有种就不用啊!!(开玩笑的…..)

好的,不跟你们多bb,我们来使用一下Dom的方式解析XML文档吧!

XML文档代码

<?xml version="1.0" encoding="UTF-8" ?><china> <guangzhou >广州</guangzhou> <shenzhen>深圳</shenzhen> <beijing>北京</beijing> <shanghai>上海</shanghai></china>

1.用EXCEL表格打开。这也是最简单的方法了。可以先打开EXCEL,然后把xml文件拖进去就可以了。2.记事本中打开。也可以用右键选择在记事本中打开,但是要想对XML文件进行编辑的话,最好还是使用XML编辑器或专业的文本编辑器。

根据XML解析的流程图,我们先要获取到解析器对象!

public class DomParse { public static void main(String[] args) throws ParserConfigurationException,IOException,SAXException { //API规范:需要用一个工厂来造解析器对象,于是我先造了一个工厂! DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); //获取解析器对象 DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); //获取到解析XML文档的流对象 InputStream inputStream = DomParse.class.getClassLoader().getResourceAsStream("city.xml"); //解析XML文档,得到了代表XML文档的Document对象! Document document = documentBuilder.parse(inputStream); }}

解析XML文档的内容用来干嘛?无非就是增删改查遍历,只要我们会对XML进行增删改查,那就说明我们是会使用DOM解析的!

遍历

我们再来看一下XML文档的内容,如果我们要遍历该怎么做?:

可能我们会有两种想法:

①:从XML文档内容的上往下看,看到什么就输出什么!【这正是SAX解析的做法】

②:把XML文档的内容分成两部分,一部分是有子节点的,一部分是没有子节点的(也就是元素节点!)。首先我们判断是否为元素节点,如果是元素节点就输出,不是元素节点就获取到子节点的集合,再判断子节点集合中的是否是元素节点,如果是元素节点就输出,如果不是元素节点获取到该子节点的集合….好的,一不小心就递归了…

我们来对XML文档遍历一下吧,为了更好地重用,就将它写成一个方法吧(也是能够更好地用递归实现功能)!

效果:

查询

现在我要做的就是:读取guangzhou这个节点的文本内容!

private static void read(Document document) { //获取到所有名称为guangzhou节点 NodeList nodeList = document.getElementsByTagName("guangzhou"); //取出第一个名称为guangzhou的节点 Node node = nodeList.item(0); //获取到节点的文本内容 String value = node.getTextContent(); System.out.println(value);}

效果:

增加

现在我想多增加一个城市节点(杭州),我需要这样做:

private static void add(Document document) { //创建需要增加的节点 Element element = document.createElement("hangzhou"); //向节点添加文本内容 element.setTextContent("杭州"); //得到需要添加节点的父节点 Node parent = document.getElementsByTagName("china").item(0); //把需要增加的节点挂在父节点下面去 parent.appendChild(element);}

做到这里,我仅仅在内存的Dom树下添加了一个节点,要想把内存中的Dom树写到硬盘文件中,需要转换器!

获取转换器也十分简单:

把内存中的Dom树更新到硬盘文件中的transform()方法就稍稍有些复杂了!

它需要一个Source实例对象和Result的实例对象,这两个接口到底是什么玩意啊?

于是乎,我就去查API,发现DomSource实现了Source接口,我们使用的不正是Dom解析吗,再看看构造方法,感觉就是它了!

而SteamResult实现了Result接口,有人也会想,DomResult也实现了Result接口啊,为什么不用DomResult呢?我们现在做的是把内存中的Dom树更新到硬盘文件中呀,当然用的是StreamResult啦!

完整代码如下:

private static void add(Document document) throws TransformerException { //创建需要增加的节点 Element element = document.createElement("hangzhou"); //向节点添加文本内容 element.setTextContent("杭州"); //得到需要添加节点的父节点 Node parent = document.getElementsByTagName("china").item(0); //把需要增加的节点挂在父节点下面去 parent.appendChild(element); //获取一个转换器它需要工厂来造,那么我就造一个工厂 TransformerFactory transformerFactory = TransformerFactory.newInstance(); //获取转换器对象 Transformer transformer = transformerFactory.newTransformer(); //把内存中的Dom树更新到硬盘中 transformer.transform(new DOMSource(document),new StreamResult("city.xml"));}

效果:

刚刚增加的节点是在china节点的末尾处的,现在我想指定增加节点的在beijing节点之前,是这样做的:

private static void add2(Document document) throws TransformerException { //获取到beijing节点 Node beijing = document.getElementsByTagName("beijing").item(0); //创建新的节点 Element element = document.createElement("guangxi"); //设置节点的文本内容 element.setTextContent("广西"); //获取到要创建节点的父节点, Node parent = document.getElementsByTagName("china").item(0); //将guangxi节点插入到beijing节点之前! parent.insertBefore(element,beijing); //将内存中的Dom树更新到硬盘文件中 TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(new DOMSource(document),new StreamResult("city.xml"));}

效果:

删除

现在我要删除的是beijing这个节点!

private static void delete(Document document) throws TransformerException { //获取到beijing这个节点 Node node = document.getElementsByTagName("beijing").item(0); //获取到父节点,然后通过父节点把自己删除了 node.getParentNode().removeChild(node); //把内存中的Dom树更新到硬盘文件中 TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(new DOMSource(document),new StreamResult("city.xml"));}

效果:

修改

将guangzhou节点的文本内容修改成广州你好

private static void update(Document document) throws TransformerException { //获取到guangzhou节点 Node node = document.getElementsByTagName("guangzhou").item(0); node.setTextContent("广州你好"); //将内存中的Dom树更新到硬盘文件中 TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(new DOMSource(document),new StreamResult("city.xml"));}

效果:

操作属性

XML文档是可能带有属性值的,现在我们要guangzhou节点上的属性

private static void updateAttribute(Document document) throws TransformerException { //获取到guangzhou节点 Node node = document.getElementsByTagName("guangzhou").item(0); //现在node节点没有增加属性的方法,所以我就要找它的子类---Element Element guangzhou = (Element) node; //设置一个属性,如果存在则修改,不存在则创建! guangzhou.setAttribute("play","gzchanglong"); //如果要删除属性就用removeAttribute()方法 //将内存中的Dom树更新到硬盘文件中 TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(new DOMSource(document),new StreamResult("city.xml"));}

效果:

SAX解析

sax是一种推式的机制,你创建一个sax 解析器,解析器在发现xml文档中的内容时就告诉你(把事件推给你). 如何处理这些内容,由程序员自己决定。

当解析器解析到<?xml version="1.0" encoding="UTF-8" standalone="no"?>

首先我们还是先拿到SAX的解析器再说吧!

/要得到解析器对象就需要造一个工厂,于是我造了一个工厂SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();//获取到解析器对象SAXParser saxParse = saxParserFactory.newSAXParser();

xml文件打开最简单的方法就是用EXCEL表格,也可以用Netscape 6来打开XML文档,并且也可以用右键选择“察看源文件”,当用Netscape 6打开XML文档后,浏览器将用带颜色的代码显示根元素和子元素。在Excel 中打开文件。

调用解析对象的解析方法的时候,需要的不仅仅是XML文档的路径!还需要一个事件处理器!

事件处理器都是由我们程序员来编写的,它一般继承DefaultHandler类,重写如下5个方法:

@Overridepublic void startDocument() throws SAXException { super.startDocument();}@Overridepublic void endDocument() throws SAXException { super.endDocument();}@Overridepublic void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException { super.startElement(uri,localName,qName,attributes);}@Overridepublic void endElement(String uri,String localName,String qName) throws SAXException { super.endElement(uri,localName,qName);}@Overridepublic void characters(char[] ch,int start,int length) throws SAXException { super.characters(ch,start,length);}

获取解析器,调用解析器解析XML文档的代码:

public static void main(String[] args) throws Exception{ //要得到解析器对象就需要造一个工厂,于是我造了一个工厂 SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); //获取到解析器对象 SAXParser saxParse = saxParserFactory.newSAXParser(); //获取到XML文档的流对象 InputStream inputStream = SAXParse.class.getClassLoader().getResourceAsStream("city.xml"); saxParse.parse(inputStream,new MyHandler());}

事件处理器的代码:

xml文件怎么打开的方法:其实最简单的就是用EXCEL表格打开了。也可以用Netscape 6来打开XML文档,并且也可以用右键选择“察看源文件” ,当你用Netscape 6打开XML文档后,浏览器将用带颜色的代码显示根元素和子元素。如何在。

public class MyHandler extends DefaultHandler { @Override public void startDocument() throws SAXException { System.out.println("我开始来扫描啦!!!!"); } @Override public void endDocument() throws SAXException { System.out.println("我结束了!!!!"); } @Override public void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException { //如果要解析出节点属性的内容,也非常简单,只要通过attributes变量就行了! //输出节点的名字! System.out.println(qName); } @Override public void endElement(String uri,String localName,String qName) throws SAXException { System.out.println(qName); } @Override public void characters(char[] ch,int start,int length) throws SAXException { System.out.println(new String(ch,start,length)); }}

我们发现,事件处理器的代码都非常简单,然后就如此简单地就能够遍历整个XML文档了!

如果要查询单独的某个节点的内容也是非常简单的哟!只要在startElement()方法中判断名字是否相同即可!

现在我只想查询guangzhou节点的内容:

/定义一个标识量,用于指定查询某个节点的内容boolean flag = false;@Overridepublic void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException { //如果节点名称是guangzhou,我才输出,并且把标识量设置为true if (qName == "guangzhou") { System.out.println(qName); flag = true; }}@Overridepublic void characters(char[] ch,int start,int length) throws SAXException { //只有在flag为true的情况下我才输出文本的内容 if (flag == true) { System.out.println(new String(ch,start,length)); }}@Overridepublic void endElement(String uri,String localName,String qName) throws SAXException { //在执行到元素的末尾时,不要忘了将标识量改成false if (qName == "guangzhou" && flag == true) { System.out.println(qName); flag = false; }}

效果:

DOM和SAX解析的区别:

DOM解析读取整个XML文档,在内存中形成DOM树,很方便地对XML文档的内容进行增删改。但如果XML文档的内容过大,那么就会导致内存溢出!

SAX解析采用部分读取的方式,可以处理大型文件,但只能对文件按顺序从头到尾解析一遍,不支持文件的增删改操作

DOM和SAX解析有着明显的差别,什么时候使用DOM或者SAX就非常明了了。

dom4j

Dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极易使用的特点。

为什么需要有dom4j

dom缺点:比较耗费内存

sax缺点:只能对xml文件进行读取,不能修改,添加,删除

dom4j:既可以提高效率,同时也可以进行crud操作

因为dom4j不是sun公司的产品,所以我们开发dom4j需要导入开发包

获取dom4j的解析器

使用dom4j对XML文档进行增删改查,都需要获取到dom4j的解析器

xml文件可以用记事本工具打开。这个最简便。所有操作系统都有这个工具,但是如果文件过大也会有问题。可以尝试使用UE或是notepad++等更专业的文本工具来查看。

/获取到解析器SAXReader saxReader = new SAXReader();//获取到XML文件的流对象InputStream inputStream = DOM4j.class.getClassLoader().getResourceAsStream("1.xml");//通过解析器读取XML文件Document document = saxReader.read(inputStream);

获取Document对象

我们都知道,Document代表的是XML文档,一般我们都是通过Document对象开始,来进行CRUD(增删改查)操作的!

获取Document对象有三种方式:

①:读取XML文件,获得document对象(这种最常用)

SAXReader reader = new SAXReader();Document document = reader.read(new File("input.xml"));

②:解析XML形式的文本,得到document对象

String text = "<members></members>";Document document=DocumentHelper.parseText(text);

③:主动创建document对象.

Document document =DocumentHelper.createDocument();//创建根节点Element root = document.addElement("members");

CRUD的重要一句话:

读取XML文档的数据,都是通过Document获取根元素,再通过根元素获取得到其他节点的,从而进行操作!

如果XML的结构有多层,需要一层一层地获取!

查询

@Testpublic void read() throws DocumentException { //获取到解析器 SAXReader saxReader = new SAXReader(); //获取到XML文件的流对象 InputStream inputStream = dom4j11.class.getClassLoader().getResourceAsStream("1.xml"); //通过解析器读取XML文件 Document document = saxReader.read(inputStream); //获取得到根节点 Element root = document.getRootElement(); //获取得到name节点 Element name = root.element("name"); //得到了name节点,就可以获取name节点的属性或者文本内容了! String text = name.getText(); String attribute = name.attributeValue("littleName"); System.out.println("文本内容是:" + text); System.out.println("属性内容是:" + attribute);}

XML文件如下:

<?xml version="1.0" encoding="UTF-8" ?> <person> <name littleName="fucheng">zhongfucheng</name> <age>20</age></person>

效果:

多层结构的查询:

xml文件怎么打开

/获取得到根节点Element root = document.getRootElement();//一层一层地获取到节点Element element = root.element("guangdong").element("guangzhou").element("luogang");String value = element.getText();System.out.println(value);

XML文件和结果:

增加

在DOM4j中要对内存中的DOM树写到硬盘文件中,也是要有转换器的支持的!

dom4j提供了XMLWriter供我们对XML文档进行更新操作,一般地创建XMLWriter的时候我们都会给出两个参数,一个是Writer,一个是OutputFormat

这个OutputFormat有什么用的呢?其实就是指定回写XML的格式和编码格式。细心的朋友会发现,上面我们在jaxp包下使用dom解析的Transformer类,把内存中的DOM树更新到文件硬盘中,是没有格式的!不信倒回去看看!这个OutputFormat就可以让我们更新XML文档时也能带有格式!

/创建带有格式的对象OutputFormat outputFormat = OutputFormat.createPrettyPrint();//设置编码,默认的编码是gb2312,读写的编码不一致,会导致乱码的!outputFormat.setEncoding("UTF-8");//创建XMLWriter对象XMLWriter xmlWriter = new XMLWriter(new FileWriter("2.xml"),outputFormat);//XMLWriter对象写入的是documentxmlWriter.write(document);//关闭流xmlWriter.close();

下面我们就为在person节点下新创建一个name节点吧,完整的代码如下:!

@Testpublic void add() throws Exception { //获取到解析器 SAXReader saxReader = new SAXReader(); //获取到XML文件的流对象 InputStream inputStream = dom4j11.class.getClassLoader().getResourceAsStream("1.xml"); //通过解析器读取XML文件 Document document = saxReader.read(inputStream); //创建出新的节点,为节点设置文本内容 Element newElement = DocumentHelper.createElement("name"); newElement.setText("ouzicheng"); //获取到根元素 Element root = document.getRootElement(); //把新创建的name节点挂在根节点下面 root.add(newElement); //创建带有格式的对象 OutputFormat outputFormat = OutputFormat.createPrettyPrint(); //设置编码,默认的编码是gb2312,读写的编码不一致,会导致乱码的! outputFormat.setEncoding("UTF-8"); //创建XMLWriter对象 XMLWriter xmlWriter = new XMLWriter(new FileWriter("2.xml"),outputFormat); //XMLWriter对象写入的是document xmlWriter.write(document); //关闭流 xmlWriter.close();}

效果如下,是有格式的!

在指定的位置增加节点!现在我想的就是在age属性前面添加节点!

/创建一个新节点Element element = DocumentHelper.createElement("name");element.setText("ouzciheng");//获取得到person下所有的节点元素!List list = document.getRootElement().elements();//将节点添加到指定的位置上list.add(1,element);

效果图:

修改

XMLWriter和获取Document对象的代码我就不贴出来了,反正都是一样的了!

/获取得到age元素Element age = document.getRootElement().element("age");age.setText("9999");

效果如下:

删除

XMLWriter和获取Document对象的代码我就不贴出来了,反正都是一样的了!

/获取得到age节点Element age = document.getRootElement().element("age");//得到age节点的父节点,使用父节点的remove删除age节点!age.getParent().remove(age);

效果:

XPATH

什么是XPATH

为什么我们需要用到XPATH

上面我们使用dom4j的时候,要获取某个节点,都是通过根节点开始,一层一层地往下寻找,这就有些麻烦了!

1、首先我们用鼠标右键单击xml文件,点击打开方式。2、然后我们在打开方式中选择记事本。3、这样就可以看到xml文件了,可以直径编辑闭关保存。4、部分xml文件打开会出现乱码,我们可以点击新疆一个记事本,点击打开,在打开选项。

如果我们用到了XPATH这门语言,要获取得到XML的节点,就非常地方便了!

快速入门

使用XPATH需要导入开发包jaxen-1.1-beta-7,我们来看官方的文档来入门吧。

在你的xml文件上右击选择”打开方式“,之后在选择”选择默认程序“。选择你想要的打开方式(一般xml初始化的时候都是用IE打开,可根据实际情况修改),之后勾选上”始终使用选择的程序打开这种文件“,点击”确定“即可完成设。

XPATH的文档非常国际化啊,连中文都有

xml文件怎么打开

XPATH文档中有非常多的实例,非常好学,对着来看就知道了!

我们来用XPATH技术读取XML文件的信息吧,XML文档如下:

之前,我们是先获取根节点,再获取guangdong节点再获取guangzhou节点,然后才能读取tianhe节点或者luogang节点的,下面我们来看一下使用XPATH可以怎么的便捷!

/直接获取到luogang节点org.dom4j.Node node = document.selectSingleNode("//luogang");//获取节点的内容String value = node.getText();System.out.println(value);

效果:

获取什么类型的节点,XPATH的字符串应该怎么匹配,查文档就知道了,这里就不再赘述了。!

上一篇 2023年02月04 18:00
下一篇 2023年01月16 18:52

相关推荐

  • 虚拟打印机怎么安装,电脑上怎么添加虚拟打印机

    前言通常,在我们组装基于Klipper控制系统的3D打印机的时候,教程中使用的上位机都是树莓派。但是基于目前的树莓派价格,我们只能对着价格感叹,实在是太贵了!这时候我们都在想,有没有什么可以替代的上位

    2023年01月20 208
  • word行间距怎么调,word如何让行距变紧凑

    Word是办公中必不可少的编辑工具,Word常用操作是我们必须要了解的,word如何让行距变紧凑,今天给大家分享关于Word行间距调节的方法,三种方法帮助你更快掌握行间距调节技巧。1、常规法调节行间距

    2023年01月10 287
  • 视频怎么转换成mp4

    经常在网上看视频的朋友们都知道,不同的平台下载过来的视频格式不相同,而且很多都需要用特定的播放器才能打开。这个时候,我们就需要把视频的格式转换为通用的MP4格式,才能正常播放。这里给大家介绍两个视频格

    2023年01月20 280
  • 酷狗歌词怎么全部显示,电脑版酷狗歌词怎么显示全部

    在酷狗音乐APP中播放歌曲的时候,有的小伙伴发现歌词是只显示一行的,没有全部显示出来。那么酷狗音乐歌词怎么全部显示?这里小编就来为大家介绍一下酷狗音乐设置多行显示歌词的方法,希望能帮助到你。酷狗音乐歌

    2023年01月23 212
  • 闲鱼怎么修改退货地址,闲鱼退货卖家要求改地址

    本内容来源于@什么值得买APP,观点仅代表作者本人|作者:老男孩瞎折腾创作立场最近因为刚需入手了显示器、手机两个不大不小的件,在各种斗争后最终只有硬盘从闲鱼入手,今天就这两样开贴,希望能帮助到大家,也

    2023年02月07 293
  • qq音乐图标怎么点亮,怎么点亮qq音乐用户

    IT之家8月19日消息,QQ音乐App11.9内测版上线替换图标功能,可限时免费体验。目前QQ音乐定制图标只有“夏日摇滚款”可更换,点击替换后需要重启App,然后就可以显示新图标了。安装QQ音乐后,连

    2023年02月01 226
  • 网络共享怎么设置,两个手机怎么网络共享

    前两天看比赛的时候,打雷打坏了我一个路由器,断了两天的网,可恶的老天爷,还让不让活!下午就把路由器拿去电脑城修,可人家说得一个星期,唉,家里两台电脑,咋整上网呢于是乎想到无线共享上网,可台式没无线网卡

    2023年01月16 247
  • 优酷视频怎么下载

    一、用优酷APP缓存导出视频方法:1、首先我们打开手机的文件夹,《本机文件夹或者SD卡文件夹》,优酷小视频能下载吗,不同的手机可能使用的文件管理器有所不同。,1、首先我们打开手机的文件夹,《本机文件夹

    2023年01月10 289
  • 连麦怎么连,手机连麦怎么弄

    手机连麦怎么弄,很多小伙伴都还不知道快手连麦pk怎么使用吧?别着急,我们就快手怎么连麦pk?直播连麦pk方法介绍一起来看看吧!快手怎么连麦pk2、点击对战之后,系统会提示我们是选择随机匹配的模式还是和

    2023年02月08 251
  • 淘宝怎么修改物流单号,淘宝快递单号填写错误怎么改

    现在网络购物已经在我们生活中非常普遍,但是我们在平台下单购物时,有时候会发现自己明明是同一个店铺购买的东西却分成两次发货;或者是不同的订单,在发货时却是在一个物流里面;这其中蕴含着什么原理呢?今天我们

    2023年01月23 235
  • cad字体大小怎么改,cad多行文字大小怎么改不了

    用CAD软件进行设计图纸,设计图上重要部分将字体、标注加大会更好的突出,于是小编本期带来的文章内容讲解的就是如何在cad中改变文字大小方法,操作很简单,只要你用心学习,一步步来操作,你的问题总会迎刃而

    2023年02月05 280
  • 微信怎么开公众号,怎么自己弄一个公众号

    微信公众号怎么创建?微信平台拥有亿万流量,它相对开放,又融合了多个平台,既符合时下最火爆的社交电商模式,又能实现闭环,同时也为变现盈利提供了巨大的可能性。因而微信公众号就成了企业/自媒体从事人员的日常

    2023年01月19 212
  • 支付宝转账转错了怎么办,不小心转错支付宝怎么办

    移动支付为我们的日常生活带来了诸多便利,手指轻轻一点,转账即刻完成。但“手滑”的故事也经常出现:不小心输错号码导致转错了人,对方收了横财后却拒不还钱,甚至拉黑自己……碰到这种情况难道只能认栽?【案情回

    2023年01月14 274
关注微信