8月20号 XML写入
来源:互联网 发布:苏州德威国际学校 知乎 编辑:程序博客网 时间:2024/06/05 14:35
对应XML的读取,XML的写入也有4中方式:
DOM写入:
会生成一个名为books1.xml的文件,文件内容:
生成newbooks.xml文件,与之前的读入时的xml文件一样
什么是RSS
简易信息聚合(也叫聚合内容)是一种RSS基于XML标准,在互联网上被广泛采用的内容包装和投递协议。RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用。RSS搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者。发布一个RSS文件后,这个RSS Feed中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使用,是一种描述和同步网站内容的格式。
RSS文件中会多出一个rss标签。
生成的文件:
其他内容可以自己自行添加。
DOM写入:
public class CreateXML { public DocumentBuilder getDocumentBuilder(){ // 创建一个DocumentBuilderFactory的对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // 创建DocumentBuilder对象 DocumentBuilder db =null; try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException e) { e.printStackTrace(); } return db; } public void createXML(){ DocumentBuilder db = getDocumentBuilder(); Document document = db.newDocument(); //设置Standalone="yes",不设置为no表示xml包含dtd和schema的相关资料 document.setXmlStandalone(true); Element bookstore = document.createElement_x("bookStore"); //向bookstore根节点中添加子节点book Element book = document.createElement_x("book"); Element name = document.createElement_x("name"); //name.setNodeValue("小王子"); name.setTextContent("小王子"); book.appendChild(name); book.setAttribute("id", "1"); //将book节点添加到bookstore根节点中 bookstore.appendChild(book); //将bookstore节点(已经包含了book)添加到dom树中 document.appendChild(bookstore); //创建TransformerFactory对象 TransformerFactory tff = TransformerFactory.newInstance(); try { //创建Transformer对象 Transformer tf = tff.newTransformer(); //设置自动换行 tf.setOutputProperty(OutputKeys.INDENT, "yes"); tf.transform(new DOMSource(document),new StreamResult(new File("books1.xml"))); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } } public static void main(String[] args) { CreateXML creatXml = new CreateXML(); creatXml.createXML(); }
会生成一个名为books1.xml的文件,文件内容:
<?xml version="1.0" encoding="UTF-8"?><bookStore> <book id="1"> <name>小王子</name> </book></bookStore>
SAX生成XML文件:
public class SAXTestCreate { public void createXML() { Book b1 = new Book(); b1.setId("1"); b1.setName("冰与火之歌"); b1.setAuthor("乔治马丁"); b1.setYear("2014"); b1.setPrice("89"); Book b2 = new Book(); b2.setId("2"); b2.setName("安徒生童话"); b2.setAuthor("乔治马丁"); b2.setYear("2004"); b2.setPrice("77"); b2.setLanguage("English"); ArrayList bookList = new ArrayList(); bookList.add(b1); bookList.add(b2); // 生成xml // 1.创建一个TransformerFactory类的对象 SAXTransformerFactory tff = (SAXTransformerFactory) SAXTransformerFactory .newInstance(); try { // 2.通过SAXTransformerFactory对象创建一个TransformerHandler对象 TransformerHandler handler = tff.newTransformerHandler(); // 3.通过handler对象创建一个Transformer对象 Transformer tr = handler.getTransformer(); //// 4.通过Transformer对象对生成的xml文件进行设置 //// 设置xml的编码 tr.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //// 设置xml的“是否换行” tr.setOutputProperty(OutputKeys.INDENT, "yes"); // 5.创建一个Result对象 File f = new File("src/res/newbooks.xml"); if (!f.exists()) { f.createNewFile(); } // 6.创建Result对象,并且使其与handler关联 Result result = new StreamResult(new FileOutputStream(f)); handler.setResult(result); // 7.利用handler对象进行xml文件内容的编写O // 打开document handler.startDocument(); AttributesImpl attr = new AttributesImpl(); handler.startElement("", "", "bookstore", attr); for (Book book : bookList) { attr.clear(); attr.addAttribute("", "", "id", "", book.getId()); handler.startElement("", "", "book", attr); // 创建name节点 if (book.getName() != null && !book.getName().trim().equals("")) { attr.clear(); handler.startElement("", "", "name", attr); handler.characters(book.getName().toCharArray(), 0, book .getName().length()); handler.endElement("", "", "name"); } // 创建year节点 if (book.getYear() != null && !book.getYear().trim().equals("")) { attr.clear(); handler.startElement("", "", "year", attr); handler.characters(book.getYear().toCharArray(), 0, book .getYear().length()); handler.endElement("", "", "year"); } // 创建author节点 if (book.getAuthor() != null && !book.getAuthor().trim().equals("")) { attr.clear(); handler.startElement("", "", "author", attr); handler.characters(book.getAuthor().toCharArray(), 0, book .getAuthor().length()); handler.endElement("", "", "author"); } // 创建price节点 if (book.getPrice() != null && !book.getPrice().trim().equals("")) { attr.clear(); handler.startElement("", "", "price", attr); handler.characters(book.getPrice().toCharArray(), 0, book .getPrice().length()); handler.endElement("", "", "price"); } // 创建language节点 if (book.getLanguage() != null && !book.getLanguage().trim().equals("")) { attr.clear(); handler.startElement("", "", "language", attr); handler.characters(book.getLanguage().toCharArray(), 0, book .getLanguage().length()); handler.endElement("", "", "language"); } handler.endElement("", "", "book"); } handler.endElement("", "", "bookstore"); // 关闭document handler.endDocument(); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } } public static void main(String[] args) { SAXTestCreate test = new SAXTestCreate(); test.createXML(); } }
生成newbooks.xml文件,与之前的读入时的xml文件一样
什么是RSS
简易信息聚合(也叫聚合内容)是一种RSS基于XML标准,在互联网上被广泛采用的内容包装和投递协议。RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用。RSS搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者。发布一个RSS文件后,这个RSS Feed中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使用,是一种描述和同步网站内容的格式。
RSS文件中会多出一个rss标签。
DOM4J生成rss文件
public class DOM4JTest { private void createXML() { //1.创建document对象,代表整个xml文档 Document document = DocumentHelper.createDocument(); //2.创建根节点rss Element rss = document.addElement("rss"); //3.向rss节点中添加version属性 rss.addAttribute("version", "2.0"); //4.生成子节点及节点内容 Element channel = rss.addElement("channel"); Element title = channel.addElement("title"); title.setText("上海移动互联网产业促进中心正式揭牌 "); //5.设置生成xml的格式 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("GBK"); //6.生成xml文件 File file = new File("rssnews.xml"); XMLWriter writer; try { writer = new XMLWriter(new FileOutputStream(file), format); //设置是否转义,默认值是true,代表转义 writer.setEscapeText(false); writer.write(document); writer.close(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { new DOM4JTest().createXML(); } }
生成的文件:
<? xml version = "1.0" encoding="GBK"?> <rss version="2.0"> <channel> <title><![CDATA[上海移动互联网产业促进中心正式揭牌 ]]></title> </channel> </rss>
其他内容可以自己自行添加。
JDOM生成RSS文件
四种方式的比较:
public class JDOMTestCreate { private void createXML() { //1.生成一个根节点 Element rss = new Element("rss"); //2.为节点添加属性 rss.setAttribute("version", "2.0"); //3.生成一个document对象 Document document = new Document(rss); Element channel = new Element("channel"); rss.addContent(channel); Element title = new Element("title"); //设置转义转义字符 CDATA cdata = new CDATA("上海移动互联网产业促进中心正式揭牌"); title.setContent(cdata); channel.addContent(title); Format format = Format.getCompactFormat(); //设置换行缩进,encoding format.setIndent(" "); format.setEncoding("GBK"); //4.创建XMLOutputter的对象 XMLOutputter outputer = new XMLOutputter(format); try { //5.利用outputer将document对象转换成xml文档 outputer.output(document, new FileOutputStream(new File("rssnews.xml"))); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { JDOMTestCreate creater = new JDOMTestCreate(); creater.createXML(); } }
<?xml version="1.0" encoding="GBK"?> <rss version="2.0"> <channel> <title><![CDATA[上海移动互联网产业促进中心正式揭牌]]></title> </channel> </rss>
四种方式的比较:
阅读全文
0 0
- 8月20号 XML写入
- xml写入
- xml写入
- 日志类同步写入2010年8月31日
- dataset写入xml
- XML文件的写入
- XML文件写入
- Dom4J 写入xml
- java写入/读取xml
- .net XML 读取 写入
- xml读取和写入
- 写入XML 学习总结
- DataTable写入xml
- Java_ABC_5.写入XML
- 写入xml iOS
- c# 写入xml
- XML的写入
- 用Java写入XML
- Dreamweaver 怎么网页布局 div css布局
- A
- Linux 集成环境mvn test 单元测试报错java.lang.OutOfMemoryError: PermGen space
- 整数划分问题(动态规划||母函数)HIT 1402
- Python学习
- 8月20号 XML写入
- VS Code 快捷键(中英文对照)
- ArcGIS API for JavaScript实现地图双屏联动
- Android studio 项目构建二|优化编译速度(2)
- QT signals and slots
- HDU 1015 Safecracker (暴力枚举)
- Navicat For Mysql快捷键
- js原生图片轮播
- 静态缓存和动态缓存的比较