-
SAX方式生成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.创建一个File对象用于接收写入的操作
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);查看全部 -
standalone : 用来表示该文件是否呼叫其它外部的文件。若值是 ”yes” 表示没有呼叫外部文件,即说明当前的xml文件是没有DTD和Schema作为它的相关文档,若值是 ”no” 则表示有呼叫外部文件。默认值是 “yes”。
PS:DTD是文档类型定义(Document Type Definition)是一套关于标记符的语法规则。
查看全部 -
将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"));查看全部 -
创建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");查看全部 -
DOM:418;SAX:3;JDOM:158;DOM4J:59 SAX快但是不便于回头修改查看全部
-
standalone="no"说明dtd那里有说明文档查看全部
-
解析xml文件常用的4中方法:DOM,SAX,JDOM,DOM4J查看全部
-
DOM/SAX官方自带: DOM生成DOM树加载到内存,方便修改,性能慢。 SAX性能最高,但是不能返回修改便签中的内容 DOM4J相对综合最好,应用广泛查看全部
-
如果要频繁修改选择DOM方式,否则选择SAX(速率较快)。 假设我现在要生成一个xml。让它去存储书籍信息。首先写根节点bookstore,然后添加第一本书,然后添加第二本书,这时候发现第一本书中有某一个内容忘记添加了,想回去进行修改或增加。这时候我们发现SAX解析是无法做到这一点的,因为SAX解析是基于事件的。基于事件的模型呢,把某一个标签走完了之后,它是不能走回头路的,它没有状态性可言。所以在使用DOM还是SAX进行选择时,要考虑到你是不是要对生成的模型进行频繁的修改。如果不是呢,建议选用SAX,因为SAX的性能也是非常高的。查看全部
-
JDOM设置XML文本的格式和编码: //方法一: Format fromat=Format.getCompactFormat(); format.setIndent(""); fromat.setEncodeing("GBK"); XMLOutputter outputter=new XMLOutputter(format); //方法二: Format format=Format.getPrettyFormat(); format.setEncoding("GBK");查看全部
-
JDOM生成XML不会转义的方法: Element title = new Element("title"); //title.setText("国内最新新闻"); CDATA cdata = new CDATA("<!上海移动互联网产业促进中心正式揭牌>"); title.addContent(cdata); channel.addContent(title);查看全部
-
通过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 outputter = new XMLOutputter(); try { outputter.output(document,new FileOutputStream(new File("rssnews.xml"))); } catch (IOException e) { e.printStackTrace(); }查看全部
-
处理转义字符: 在写XML文件时有一些符号是转义字符,会默认进行转义操作,从而不会直接显示原字符。 人为设置是否转义的方法: 在生成XML文件时进行设置: writer.setEscapeText(boolean);//默认值是false,代表转义查看全部
-
//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"); try { XMLWriter writer = new XMLWriter(new FileOutputStream(file),format); writer.write(document); writer.close(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }查看全部
-
RSS通常是用来描述和同步网站内容的一种格式,本质是xml xml通常的用途就是可以共享数据 rss文件格式:<xml version = 版本号 encoding = 编码> <rss version = 版本号> <channel>内容</channel> </rss> </xml>查看全部
举报