2017.01.03 林宥嘉——开到荼蘼(live)

jdom生成之后同样可以解析xml文档
对文档的操作的整个流程可以归结为SQL的基本操作:CURD
对这四种方法的掌握基本可以延伸出很多复杂的操作


Jdom APi文档
创建(Create)、更新(Update)、读取(Retrieve)和删除(Delete)
对于xml,最重要的就是理解root、child、content和attribute这几个的含义

  • 创建==生成xml文档
Element root = new Element("articles");//定义根节点
Document Doc = new Document(root);//以根节点创建文件
Element element = new Element("article");//添加叶子节点
//给叶子节点添加了四个属性
element.addContent(new Element("id").setText(String.valueOf(n)));                 
element.addContent(new Element("title").setText(title));
element.addContent(new Element("tmeta").setText(tmeta));
element.addContent(new Element("url").setText(url));
root.addContent(element);//与根节点建立关系
//关于xml的格式确实有几种,我现在也不太懂,可以从format的api看出来
Format format = Format.getPrettyFormat();
XMLOutputter XMLOut = new XMLOutputter(format);
System.out.println(XMLOut);
XMLOut.output(Doc, new FileOutputStream(outfile));
//不要format格式,就是默认输出
XMLOutputter out = new XMLOutputter();
out.output(document, new FileOutputStream(outfile));
        

结果就像这个样子:
<article>
<id>1</id>
<title>Hidden Side Effects: Medical Studies Often Leave Out Adverse Outcomes</title>
<tmeta>14 hours ago — Ryan F. Mandelbaum</tmeta>
<url>https://www.scientificamerican.com/article/hidden-side-effects-medical-studies-often-leave-out-adverse-outcomes/</url>
</article>

  • 读取==查找+get,找到某个属性值对应的其余属性
InputStream is = new FileInputStream(file);
Document document = builder.build(is);//获得文档对象
Element root = document.getRootElement();//获得根节点
List<Element> list = root.getChildren();//将所有叶子节点存在一个list里
//for(e:list)写个循环就可以开始指定或者部分修改
e.getChild("url").setAttribute("link", e.getChildText("url"));//给url添加新属性link
e.getChild("url").setText(“aaa”);//将原有url里的内容改为aaa
  • 更新==修改、添加节点或者节点对应的属性

对于更新的第一步,其实是要先进行查找,第二部分for+get就是查找,后面添加了set就是修改

Element element = new Element("person");
element.setAttribute("id", "3");
Element element1 = new Element("username");
element1.setText("zhangdaihao");
Element element2 = new Element("password");
element2.setText("mima");
element.addContent(element1);
element.addContent(element2);
root.addContent(element);
doc.setRootElement(root);
  • 删除==删除节点
root.removeContent(e);
e.removeAttribute();
e.removeChild();
e.removeChildren();

孤独

从童年起,我便独自一人
照顾着
历代的星辰

发表评论

电子邮件地址不会被公开。