XML
来源:互联网 发布:sql exists in 效率 编辑:程序博客网 时间:2024/06/15 04:54
语法
CDATA区
如果把标签里的内容当做一个普通文本显示,而不是当成标签来处理,那么
<![CDATA[内容]]>
xml解析
分类
- dom解析
- sax解析
- pull解析
原理:
Dom解析
根据xml的层级结构在内存里面分配一个树形结构。
优点:方便实现增加、修改、删除操作。
缺点:如果文档过大,会造成内存溢出。
sax解析:
采用事件驱动的方式,边读边解析。
优点:不会造成内存溢出
缺点:不能实现增加、修改、删除的操作
pull解析的原理就是sax解析原理。
pull解析和序列化
xml文件必须放在src下,解析和序列化都需要jar包
解析
- 得到解析器工厂
- 通过工厂得到解析器
- 把xml文件放到pull解析器中
- 进行解析
stu.xml:
<?xml version="1.0" encoding="UTF-8"?><students> <student> <name>奥巴马</name> <age>60</age> </student> <student> <name>川普</name> <age>70</age> </student></students>
public static void main(String[] args) throws Exception { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory.newPullParser(); FileInputStream is = new FileInputStream("src/stu.xml"); parser.setInput(is, "utf-8"); int type = 0; List<Student> list = null; Student student = null; while ((type = parser.getEventType()) != XmlPullParser.END_DOCUMENT) { String tagName = parser.getName(); switch (type) { case XmlPullParser.START_TAG: if (tagName.equals("students")) { list = new ArrayList<Student>(); } else if (tagName.equals("student")) { student = new Student(); } else if (tagName.equals("name")) { String name = parser.nextText(); student.setName(name); } else if (tagName.equals("age")) { String age = parser.nextText(); student.setAge(Integer.parseInt(age)); } break; case XmlPullParser.END_TAG: if (tagName.equals("student")) { list.add(student); } break; default: break; } parser.next(); } for (Student stu : list) { System.out.println(stu.toString()); }}
序列化:
public static void main(String[] args) throws Exception { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlSerializer serializer = factory.newSerializer(); Student stu = new Student("安倍晋三",70); FileOutputStream os = new FileOutputStream("e://stu.xml"); serializer.setOutput(os, "utf-8"); serializer.startDocument(null, true); serializer.startTag(null,"students"); serializer.startTag(null, "student"); serializer.startTag(null, "name"); serializer.text(stu.getName()); serializer.endTag(null, "name"); serializer.startTag(null, "age"); serializer.text(stu.getAge()+""); serializer.endTag(null, "age"); serializer.endTag(null, "student"); serializer.endTag(null,"students"); serializer.endDocument();}
阅读全文
0 0
- XML
- XML
- XML
- XML
- xml
- xml
- XML
- XML
- XML
- xml
- xml
- XML
- XML
- xml
- xml
- xml
- XML
- XML
- CodeForces 217 A.Ice Skating(并查集)
- 累死你的不是工作,而是工作方式
- poj 3250 Bad Hair Day(单调栈)
- Telnet、Mstsc、SSH之间的比较和区别
- POJ2125 Destroying The Graph(最小割求割点)
- XML
- duilib 入门四之UIBase
- Linux文件前面加点例如.bashrc表示什么意思
- H5 CSS基础二:清除浮动是个难点
- vue-cli for循环
- EventBus 源码试读(一)
- Scala控制结构
- 文章标题
- 判断某一年是否是闰年