1、XML的作用:1)一致数据传输的花样。2)做小型数据库[文件型数据库]。3)做配置文件 .ini .propertity .xml .cfg
2、XML文件的基础花样:
标签:分为双标签和单标签,双标签的开首和末端标署名必需一致,大小写一样,/ 开首的是末端标签,单标签必需在 > 前加上 / 来末端,单标签中不能放文本。
属性:在最先标签中定义一些名值对,值一定是字符串
3、XML文件的基础组成:
1)在第一行是XML声明 <?xml version="1.0" encoding="UTF-8" ?>
2)必需且只能有一对根标签
3)标签能够一层一层嵌
二、写一个简朴的xml文档stus.xml然后用Dom举行剖析。
DOM : Document Object Model 文档对象模子
DOM剖析的基础思路:将全部XML文件一次性读入内存,将全部XML看作一棵文档树,XML中的每个标签,属性,文本都看作是树上的一个结点,然后能够对结点举行增编削查的操纵。
已编辑好的stus.xml文档
<?xml version="1.0" encoding="UTF-8"?> <stus Class="1401" > <stu num="01"> <name>张三</name> <age>19</age> <sex>男</sex> </stu> <stu num="02"> <name>李四</name> <age>20</age> <sex>女</sex> </stu> <stu num="03"> <name>王五</name> <age>21</age> <sex>男</sex> </stu> </stus>
三、最先剖析
建立剖析工场
// 取得剖析工场对象 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); // 生产一个剖析器对象 DocumentBuilder builder = factory.newDocumentBuilder(); // 最先剖析xml文件,取得的剖析效果是一个Document对象,Document对象叫做文档树对象 Document dom = builder.parse("stus.xml");
1、增添节点
基础思路:起首建立一个新的元素节点,将元素节点追加到根节点背面,设置其节点属性。建立标签,设置标签文本内容,末了将新标签添加到新的元素节点中。
代码:
// 建立一个新的元素节点 Element stu = dom.createElement("stu"); // 将元素节点追加到根节点背面 root.appendChild(stu); // 设置节点属性 stu.setAttribute("num", "04"); // 建立标签 Element name = dom.createElement("name"); Element age = dom.createElement("age"); Element sex = dom.createElement("sex"); // 设置标签文本内容 name.setTextContent("赵六"); age.setTextContent("19"); sex.setTextContent("女"); // 把标签添加到新的元素节点stu中 stu.appendChild(name); stu.appendChild(age); stu.appendChild(sex);
2、删除节点
基础思路:取得要删除的节点,然后取得节点的属性值,与要删除的节点的属性值举行比较,假如该属性值对应的节点存在则移除该节点。
代码:
// 取得根节点 Element root = (Element) dom.getFirstChild(); // 取得一切stu节点 NodeList list = dom.getElementsByTagName("stu"); for (int i = 0; i < list.getLength(); i++) { Node node = list.item(i); if (node instanceof Element) { Element e = (Element) node; // 取得节点的属性值,与要删除的结点的属性值举行比较,然后移除该属性值对应的结点 String num = e.getAttribute("num"); if (num.equals("02")) { root.removeChild(e); break; } } }
3、修正节点
基础思路:取得要修正的节点,修正其属性值,然后取得该节点下的标签,修正标签中的文本内容。
代码:
// 修正节点属性 for (int j = 0; j < list.getLength(); j++) { Node no = list.item(j); if (no instanceof Element) { Element el = (Element) no; String n = el.getAttribute("num"); if (n.contains("01")) { el.setAttribute("num", "05"); // 修正标签值 NodeList li = el.getChildNodes(); for (int x = 0; x < li.getLength(); x++) { Node d = li.item(x); if (d instanceof Element) { Element ee = (Element) d; String noN = ee.getNodeName(); if (noN.equals("name")) { ee.setTextContent("小白"); } else if (noN.equals("age")) { ee.setTextContent("11"); } else if (noN.equals("sex")) { ee.setTextContent("男"); } } } }
4、查找节点
基础思路:取得一切的节点,用 须要查找的结点的属性值与一切节点举行比较,假如该节点存在,就打印该节点的属性值及其节点下标签的内容。
代码:
for (int j = 0; j < list.getLength(); j++) { Node no = list.item(j); if (no instanceof Element) { Element el = (Element) no; String n = el.getAttribute("num"); //查找节点,显现其属性值及标签内容 if(n.equals("03")){ System.out.println(no.getNodeName()+"\t"+n+no.getTextContent()); } } }
4、保留修正后的xml文档
基础思路:先将内存中的Document对象写到xml文件中,然后将全部Document对象作为要写入xml文件的数据源,末了将数据源写入目的文件。
代码:
// 将内存中的Document对象写到xml文件中 TransformerFactory tf = TransformerFactory.newInstance(); Transformer former = tf.newTransformer(); former.setParameter("version", "1.0"); former.setParameter("encoding", "GBK"); // 将全部Document对象作为要写入xml文件的数据源 DOMSource xmlSource = new DOMSource(dom); // 要写入的目的文件 StreamResult outputTarget = new StreamResult(new File("F:\\stus2.xml")); former.transform(xmlSource, outputTarget);
以上就是xml剖析-增编削查操纵后将其修正效果保留的代码实例的细致内容,更多请关注ki4网别的相干文章!