小编给大家分享一下XML概述以及Pull解析的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
成都创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的漠河网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
ONE Goal ,ONE Passion !
做Android开发最多的都是json.而且解析xml都用Xstream,慢慢地xml的手动解析都快忘记了.一般最常见的还是基于dom的demo4j , 还有基于sax的pull解析.还有一种吧忘记了
XML是什么 ?
eXtensible Markup Language(可扩展的标记语言);
1,用作配置文件
2,数据传输时数据格式
3,Android中资源文件
1.声明 必须写在第一行
version : xml的版本号.目前只有1,0版本 encoding: 编码格式
2,只能有一个根标签
3,每个标签都必须闭合
4,不能交叉嵌套
形如:
#3F51B5
5,CDATA区
如在文档中使用”<”,”>”等特殊符号时要使用CDATA区,否者不能正常编译.
public class WriteXml { public static void main(String[] args) throws Exception { // 创建xml解析工厂 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); // 通过工厂创建序列化器(xml生成器) XmlSerializer ser = factory.newSerializer(); // 为序列化器指定输出流(将xml文件写到指定的某个文件中) ser.setOutput(new FileOutputStream("src/b.xml"), "utf-8"); // 开始写xml文件 // 1.xml的声明---------- ser.startDocument("utf-8", true); // 2. 开始标签 ---------- <书库> ser.startTag(null, "书库"); for ( int i = 0; i < 2; i++) { //3.开始标签 ------------- <书> ser.startTag(null, "书"); // 4. 开始标签------------ <书名> ser.startTag(null, "书名"); //4.1为书名标签设置 属性--------- <书名 id = "1001"> ser.attribute(null, "id", "1001"); //4.2标签设置 文本------------ <书名 id = "1001" >百年孤独 ser.text("百年孤独"); // 5,结束标签 ------------ 书名> ser.endTag(null, "书名"); // 6.结束标签------------书> ser.endTag(null, "书"); } // 7.根标签 结束-----------书库> ser.endTag(null, "书库"); ser.endDocument(); } }
生成的b.xml文件为:
<书库> <书> <书名 id="1001">百年孤独书名> 书> <书> <书名 id="1002">百年孤独书名> 书> 书库>
public class XmlParserDemo { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { // 创建pull解析器工厂对象 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); // 创建解析器对象 ArrayListlist = null; Book book = null; // 获得解析器 XmlPullParser parser = factory.newPullParser(); // 从指定文件中解析 出xml parser.setInput(new FileInputStream("src/b.xml"), "utf-8"); // 1 . 判断是否是根标签的结束标签 while (parser.getEventType() != XmlPullParser.END_DOCUMENT) { switch (parser.getEventType()) { case XmlPullParser.START_TAG: // 开始标签 if (parser.getName().equalsIgnoreCase("书库")) { // ------------<书库> // 如果是 跟标签时,创建集合存储 对象 list = new ArrayList (); } else if (parser.getName().equalsIgnoreCase("书")) { // ----------<书> // 当标签是对象时. 创建 对象 book = new Book(); } else if (parser.getName().equalsIgnoreCase("书名")) { // ----------<书名> // 获得当前标签中的 属性以及text.并存储到对象中 String id = parser.getAttributeValue(null, "id"); book.setId(id); String name = parser.nextText(); book.setName(name); } break; case XmlPullParser.END_TAG: // 结束标签 // 标签为对象的结束标签时,将对象存储到集合中 书> if (parser.getName().equalsIgnoreCase("书")) { // -------书> // 注意:当时书名>结束标签时不用做处理 list.add(book); } break; } parser.next(); } for (int i = 0; i < list.size(); i++) { System.out.println("---" + list.get(i)); } } }
如果没有build.path会报下面的错误:
org.xmlpull.v1.XmlPullParserException: caused by: org.xmlpull.v1.XmlPullParserException: resource not found: /META-INF/services/org.xmlpull.v1.XmlPullParserFactory make sure that parser implementing XmlPull API is available
形如:
//返回null //返回 书名,null,书名 <书名 id="1001">百年孤独书名> //返回 书名,null,书名 <书名 id="1002">书名>
当parser解析时.parser也会移动到标签题文本(text)中.而text没有标签名所以为null.
以上是“XML概述以及Pull解析的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!