XML

xml 可扩展标记语言,标签都是自定义的,什么是标记呢?就是一个记录,不需要编译的
html:超文本标记语言

html与xml的区别:
html:是预定义
xml:标签是你任意发挥发挥
html:主要用于页面展示
xml:存数据

最新的html5 跨平台开发 最火的一个就是html5=html4.0+xml

xml的基本结构:
每一个的xml 第一行都是申明,version:第一个是版本号,encoding:第二个是设置其编码格式

下面那一部分就是文档的描述 元素节点 属性节点 文本节点

XML编写注意事项
1.所有 XML 元素都须有关闭标签
2.XML 标签对大小写敏感
3.XML 必须正确地嵌套,尽量避免用特殊符号
4.XML 第一个必须有一个根元素
5.XML 的属性值须加引号
6.XML 命名必须遵循驼峰命名

XML 验证解析器与非验证解析
检查语法这些都是非验证解析
验证性解析:主要为了检查dtd文件,(就相当于导包 )

命名空间
1.使用前缀来避免命名冲突:
2.使用命名空间(Namespaces):

解析XML 转化为一个dom对象 dom解析(web) dom4j(就是对dom 的一个封装) sax

得到doc对象:
通过得到doc解析器工厂得到doc工厂
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();

得到doc工厂
DocumentBuilder db=dbf.newDocumentBuilder();

把文件的路径转化一个文件的对象file
File f=new File(“src/phone.xml”);

Document doc==db.parse(f);

获取元素节点:getElementsByTagName()(获取到的是一个数组)
例:NodeList nodeList=doc.getElementsByTagName(“Brand”);

获取到每一个节点:item();(返回的是Object类型.一般都是强转为(Element)类型)
例:Node item = nodeList.item(i);

添加一个新属性:setAttribute(String name, String value);
例:e.setAttribute(“id”,(i+1)+”“);

按名称检索属性值:getAttribute(String name);

父类节点:getParentNode()

删除子节点:removeChild(代入要删除的节点)

创建子节点:createElement(”要创建节点的名字”);
例:Element elementBrand = doc.createElement(“Brand”);

添加子节点:appendChild()
父类的 子类的
例:elementBrand.appendChild(elementType);

得到把数据写入在XML的工厂:
例:TransformerFactory tff=TransformerFactory.newInstance();

通过工厂得到转换器:
例:Transformer tf = tff.newTransformer();

设置一个对转换有效的输出属性:setOutputProperty(String name, String value)
OutputKeys.ENCODING:输出的编码是
例:tf.setOutputProperty(OutputKeys.ENCODING, “utf-8”);

//得到source 对象
DOMSource domSource=new DOMSource(doc);

//得到result对象
StreamResult st=new StreamResult(new OutputStreamWriter(new FileOutputStream(path), “utf-8”));

//进行转换
tf.transform(domSource, st);

DOM4J

创建saxReader对象
SAXReader reader = new SAXReader();

通过read方法读取一个文件 转换成Document对象
Document document = reader.read(new File(“src/phone.xml”));

得到根节点,也就是拿到xml里面的phones
Element e = doc.getRootElement();

转化成迭代器
Iterator iterator = e.elementIterator();

根据父节点删除子节点
ele.getParent().remove(ele);

添加节点:
Element elementBrand = e.addElement(“Brand”);

给节点来设置值:(setAttributeValue()这方法淘汰了,不过还可以用)
elementBrand.setAttributeValue(“name”, “华为”);

通过name来得到具体的值:
String attributeValue = elementBrand.attributeValue(“name”);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值