XML的读取和解析以及输出
来源:互联网 发布:苹果激活策略查询软件 编辑:程序博客网 时间:2024/05/16 18:44
XML的读取和解析以及输出
XML的简介
XML即是Extensible Markup Language的缩写,是一种用于标记电子文件使之具有结构性的标记语言。XML是HTML的一个子集,并非是HTML的替代,二者具有相似性和区别。XML可以用来标记数据,定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言,具有以下特性:
1. XML类似于HTML。
2. XML适合传输数据而非现实数据。
3. XML的标签需要用户自定义
4. XML是w3c的推荐标准
5. XML具有自我描述性
与HTML的区别:
1. XML不是HTML的替代
2. XML和HTML的设计目的不同,XML注重数据的内容和数据的传输,HTML注重数据的外观和现实数据。
XML的语法结构(摘自百度百科)
一、任何的起始标签都必须有一个结束标签。
二、可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如<百度百科词条/>。XML解析器会将其翻译成<百度百科词条></百度百科词条>。
三、标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如这是一串百度百科中的样例字符串。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。
四、所有的特性都必须有值。
五、所有的特性都必须在值的周围加上双引号。
XML的实例
<Languages cat="it"> <lan id="1"> <name>java</name> <ide>eclipse</ide> </lan> <lan id="2"> <name>swift</name> <ide>xcode</ide> </lan> <lan id="3"> <name>c#</name> <ide>vs</ide> </lan></Languages>
在XML中,元素可以包含其他元素,文本内容,或者二者的混合物。元素可以拥有属性
在此例中languages包含了元素和文本,本身也具有属性,lan中也是包含元素,和文本,本身也有属性,而例如name中则只包含文本。
输出XML格式的数据
以代码为例
try { DocumentBuilderFactorybuilderfactory=DocumentBuilderFactory.newInstance(); DocumentBuilderbuilder=builderfactory.newDocumentBuilder(); Documentdocument=builder.parse(getAssets().open("languages.xml")); Elementelement=document.getDocumentElement(); NodeListlist=element.getElementsByTagName("lan"); for(inti=0;i<list.getLength();i++){ Elementlan=(Element)list.item(i); text.append(lan.getAttribute("id"+"\n")); text.append(lan.getElementsByTagName("name").item(0).getTextContent()+"\n"); text.append(lan.getElementsByTagName("ide").item(0).getTextContent()+"\n"); } } catch (Exception e) { e.printStackTrace(); }
这段程序对应的XML文件
<?xmlversion="1.0" encoding="UTF-8"?><Languages cat="it"> <lan id="1"> <name>java</name> <ide>eclipse</ide> </lan> <lan id="2"> <name>swift</name> <ide>xcode</ide> </lan> <lan id="3"> <name>c#</name> <ide>vs</ide> </lan></Languages>
先通过文件操作流打开了对应的XML文件,将之写入一个list然后在for循环中,通过文本的对应的标签加入text中,然后在虚拟机中运行时,text可以显示。
创建XML格式的文件(以相同的内容的XML文件为例)
try{ DocumentBuilderFactorybuilderfactory=DocumentBuilderFactory.newInstance(); DocumentBuilderbuilder=builderfactory.newDocumentBuilder(); Documentnewxml=builder.newDocument(); Elementlanguages=newxml.createElement("languages"); languages.setAttribute("cat","it"); //languages1create Elementlan1=newxml.createElement("lan"); lan1.setAttribute("id","1"); Elementname1=newxml.createElement("name"); name1.setTextContent("java"); Elementide1=newxml.createElement("ide"); ide1.setTextContent("eclipse"); lan1.appendChild(name1); lan1.appendChild(ide1); languages.appendChild(lan1); //languages2create Elementlan2=newxml.createElement("lan"); lan2.setAttribute("id","2"); Elementname2=newxml.createElement("name"); name2.setTextContent("Swift"); Elementide2=newxml.createElement("ide"); ide2.setTextContent("XCode"); lan2.appendChild(name1); lan2.appendChild(ide1); languages.appendChild(lan2); //languages3create Elementlan3=newxml.createElement("lan"); lan3.setAttribute("id","3"); Elementname3=newxml.createElement("name"); name3.setTextContent("c#"); Elementide3=newxml.createElement("ide"); ide3.setTextContent("VisualStdio"); lan3.appendChild(name3); lan3.appendChild(ide3); languages.appendChild(lan3); newxml.appendChild(languages); TransformerFactorytransformerFactory=TransformerFactory.newInstance(); Transformertransformer=transformerFactory.newTransformer(); transformer.setOutputProperty("encoding","utf-8"); StringWritersw=new StringWriter(); transformer.transform(newDOMSource(newxml), new StreamResult(sw)); text.setText(sw.toString()); } catch(Exception e){ e.printStackTrace(); }
其原理类似于JSON格式数据的创建
另付一个可以在线测试XML格式的网站:
http://json.parser.online.fr
- XML的读取和解析以及输出
- Jquery读取json文件和xml文件以及解析
- dom4j做xml的解析和输出
- JAVA读取XML文件并解析 以及 JAVA生成文本文件输出
- XML解析和Json解析简介以及两者的区别
- http协议解析xml以及读取xml文件
- 读取和解析XML数据----读取XML DocumentBuilderFactory
- 用于读取xml,解析然后按照规则来输出
- Xml读取和写入以及新建
- XStream解析和读取xml报文
- 2014.10.31读取和解析XML数据
- XStream解析和读取xml报文
- XML简介以及XML的解析
- C# 的泛型以及网络下载Xml文件和读取Xml文件
- jdom和dom4j读取xml文件以及生成xml文件的方法
- 字符串的读取和输出
- 文件的读取和输出
- XML解析之sax解析案例(一)读取contact.xml文件,完整输出文档内容
- VS2010 error LNK1123转换到 COFF 期间失败
- js动态获取参数
- burpsuite 启动问题
- 关节点(atriculation point)算法
- float,double数据类型在内存中的存储方式
- XML的读取和解析以及输出
- LSWM处理时,网络中断,出现错误
- 科学方法论--信息论、老鼠毒药问题、称球问题(全文)
- sdut2411 Pixel density
- Oracle数据库生成主键
- 第五周 程序阅读
- MFC改变编辑框背景、字体、颜色等
- Android 如何进行简单的反编译
- python 如何判断一个array是否是空?