-
xml对CDATA进行转义 Element title = new Element("title"); CDATA cdata = new CDATA("上海移动互联网产业促进中心正式揭牌"); title.addContent(cdata);查看全部
-
RSS通常是用来描述和同步网站内容的一种格式,本质是xml xml通常的用途就是可以共享数据查看全部
-
将DOM树转换成XML文件 1,创建TransformerFactory对象,Factory为工厂类,不能直接new对象,通过newInstance获取对象 TransformerFactory tff = TransformerFactory.newInstance(); 2,通过tff获取Transfomer对象 Transformer tf = tff.newTransformer(); 3,指定换行格式 tf.setOutputProperty(OutputKeys.INDENT,"yes"); 4,用DOM树生成XML文件,将DOM树以及输出流作为参数传入 tf.transform(new DOMSource(Document do),new StreamResult(new File("books1.xml"));查看全部
-
standalone : 用来表示该文件是否呼叫其它外部的文件。若值是 ”yes” 表示没有呼叫外部文件,即说明当前的xml文件是没有DTD和Schema作为它的相关文档,若值是 ”no” 则表示有呼叫外部文件。 默认值是 “yes”。 DTD:文档类型定义(Document Type Definition)是一套关于标记符的语法规则。 <?xml version="1.0" encoding="utf-8" standalone="no" ?> 注:顺序不能弄错,要不然会报错 附:一开始以为是standalone =“no”的问题 ,后来查了一下 发现,这个属性真正的意思是: XML standalone 定义了外部定义的 DTD 文件的存在性. standalone element 有效值是 yes 和 no. 如下是一个例子: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE s1 PUBLIC "http://www.ibm.com/example.dtd" "example.dtd"> <s1>.........</s1> 值 no 表示这个 XML 文档不是独立的而是依赖于外部所定义的一个 DTD. 值 yes 表示这个 XML 文档是自包含的(self-contained). Ps:因为两个视频的说法引起歧义,又去网络上查了下,standalone表示该xml是不是独立的,如果是yes,则表示这个XML文档时独立的,不能引用外部的DTD规范文件;如果是no,则该XML文档不是独立的,表示可以引用外部的DTD规范文档。 1.<?xml version="1.0" encoding="utf-8" standalone="yes/no"?> yes:说明当前的xml文件是没有DTD和Schema作为它的相关文档的;no:相反 2. 节点对象.setTextContent 可以为文本节点添加节点值(这里直接给Element节点setValue添加节点值是不行的,Element的nodeValue为null)查看全部
-
standalone : 用来表示该文件是否呼叫其它外部的文件。若值是 ”yes” 表示没有呼叫外部文件,即说明当前的xml文件是没有DTD和Schema作为它的相关文档,若值是 ”no” 则表示有呼叫外部文件。默认值是 “yes”。 DTD:文档类型定义(Document Type Definition)是一套关于标记符的语法规则。查看全部
-
创建XML文件: 1,前两个步骤和解析XML文件一致,都是获取DocumentBuilder对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.getDocumentBuilder(); 2,通过DocumentBuilder的newDocument方法获取Document对象,代表着要生成的DOM树 Document do = db.newDocument(); 3,将根节点添加进DOM树 Element ele = do.createElement("bookStore"); document.appendChild(ele); 4,将子节点添加进DOM树 Element ele1 = document.createElement("book"); ele.appendChild(ele1) 5,将子节点的属性及属性值添加进DOM树 ele1.setAttribute("id","1");查看全部
-
####一、主要用到的类: 1. SAXTransformerFactory:用于创建TransformerHandler实例 2. TransformerHandler:用于生成解析文档 3. Transformer:用于格式化输出的结果 4. Result:用于保存TransformerHandler产生的结果 ####二、主要的流程 // 创建一个工厂类实例,用于创建Handler实例 SAXTransformerFactory factory = (SAXTransformerFactory)SAXTransformer.newInstance(); // 从工厂实例中获取Handler实例 TransformerHandler handler = factory.newTransformerHandler(); // 创建一个格式化传输器 Transformer transformer = handler.getTransformer(); // 设置输出属性:OutputKeys.IDENNT="yes"表示输出结果带换行 former.setOutputProperty(OutputKeys.IDENNT,"yes"); // 创建转换结果持有器,用于保存Handler输出的结果 Result result = new StreamResult(new File("demo.txt")); // 建立handler与result之间的关联,确保handler处理的结果能正确的保存到result中 handler.setResult(result); // handler处理文档的细节(在下一个笔记里面)查看全部
-
生成带文本的子节点 // 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"); } ...//类似创建name节点(price、language...等等) handler.endElement("", "", "book"); } handler.endElement("", "", "bookstore"); // 关闭document handler.endDocument(); } Ps1:setResult()必须在startDocument()之前调用。 Ps2:void characters(char[] ch,int start,int length)throws SAXException。查看全部
-
JDOM 生成 XML 根节点 private void createXML() { //1.生成一个根节点 Element rss = new Element("rss"); //2.为节点添加属性 rss.setAttribute("version", "2.0"); //3.生成一个document对象 Document document = new Document(rss); //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(); } }查看全部
-
转义操作将title.setText("<![CDATA[上海移动互联网产业促进中心正式揭牌 ]]>");换成title.addContent(new CDATA("上海移动互联网产业促进中心正式揭牌"));查看全部
-
standalone表示该xml是不是独立的,如果是yes,则表示这个XML文档时独立的,不能引用外部的DTD规范文件;如果是no,则该XML文档不是独立的,表示可以引用外部的DTD规范文档。 <?xml version="1.0" encoding="utf-8" standalone="yes/no"?> 生成XML文件子节点的文本内容<br> 1,将子节点添加进DOM树<br> Element ele2 = new Element("name");<br> ele1.append(ele2);<br> 2, 设置子节点的文本内容<br> ele2.setTextContent("String");查看全部
-
如果要频繁修改选择DOM方式,否则选择SAX(速率较快)。 假设我现在要生成一个xml。让它去存储书籍信息。首先写根节点bookstore,然后添加第一本书,然后添加第二本书,这时候发现第一本书中有某一个内容忘记添加了,想回去进行修改或增加。这时候我们发现SAX解析是无法做到这一点的,因为SAX解析是基于事件的。基于事件的模型呢,把某一个标签走完了之后,它是不能走回头路的,它没有状态性可言。所以在使用DOM还是SAX进行选择时,要考虑到你是不是要对生成的模型进行频繁的修改。如果不是呢,建议选用SAX,因为SAX的性能也是非常高的。查看全部
-
通过SAX生成XML文件的节点步骤<br> 先生成外围节点在外围节点的startElement和endElement中间生成子节点<br> 分两种情况:<br> 1,有属性的节点<br> (1)创建属性对象,并设置属性名以及属性值<br> AttributesImpl ai =new AttributesImpl();<br> ai.addAttribute(null,null,name,null,value);<br> (2)创建节点<br> handler.startElement(null,null,name,ai)<br> (3)添加节点内容(若无内容则不用进行这一步)<br> handler.characters(String.toCharArray(),int,int);<br> (4)结束节点<br> handler.endElement(null,null,name);<br> 2,无属性的节点<br> (1)清空属性对象<br> ai.clear();<br> (2)创建节点<br> handler.startElement(null,null,name,ai)<br> (3)添加节点内容(若无内容则不用进行这一步)<br> handler.characters(String.toCharArray(),int,int);<br> (4)结束节点<br> handler.endElement(null,null,name);查看全部
-
XML的四种读写方式 DOM:基于DOM Tree 会存在内存中,可以频繁的修改 SAX:基于事件 不会存在于内存,无法返回修改 DOM4J:基于底层API JDOM:基于底层API DOM方便后续改动操作,但比较占用内存,因为是加载整个DOM树在内存中。 SAX是逐步解析和写入的,也就是说在写入时,已经操作完成的写入部分是无法进行修改的,因为SAX是基于事件的,其将某一个标签走完之后是不能走回头路的,没有状态性可言,但SAX的性能是非常高的。 这两种方式的选择中很大一部分判断基于是否对文档进行频繁的修改查看全部
-
DOM和SAX生成xml文件 JDOM和DOM4J会形成一个全新的RSS文件查看全部
举报
0/150
提交
取消