WEB开发网
开发学院软件开发Java Java 中的 XML: Java 文档模型的用法 阅读

Java 中的 XML: Java 文档模型的用法

 2009-11-05 00:00:00 来源:WEB开发网   
核心提示: 清单 2 中显示的方法所使用的基本方法与所有文档表示的方法相同,通过一个元素调用它,Java 中的 XML: Java 文档模型的用法(4),它就依次遍历那个元素的子元素,如果找到文本内容子元素,一旦创建了新元素,我只要创建和添加文本节点来包装内容 String ,要么删除文本(如果它只是由空格

清单 2 中显示的方法所使用的基本方法与所有文档表示的方法相同。通过一个元素调用它,它就依次遍历那个元素的子元素。如果找到文本内容子元素,要么删除文本(如果它只是由空格组成的),要么通过与包含元素相同的名称空间中名为“text”的新元素来包装文本(如果有非空格的字符)。如果找到一个子元素,那么这个方法就使用这个子元素,递归地调用它本身。

对于 DOM 实现,我使用一对引用: child 和 next 来跟踪子元素排序列表中我所处的位置。在对当前子节点进行任何其它处理之前,先装入下个子节点的引用(第 7 行)。这样做使得我能够删除或替代当前的子节点,而不丢失我在列表中的踪迹。

当我创建一个新元素来包装非空白的文本内容(第 16-24 行)时,DOM 接口开始有点杂乱。用来创建元素的方法与文档关联并成为一个整体,所以我需要在所有者文档中检索当前我正在处理的元素(第 17 行)。我想将这个新元素放置在与现有的父元素相同的名称空间中,并且在 DOM 中,这意味着我需要构造元素的限定名称。根据是否有名称空间的前缀,这个操作会有所不同(第 18-19 行)。利用新元素的限定名称,以及现有元素中的名称空间 URI,我就能创建新元素(第 20-21 行)。

一旦创建了新元素,我只要创建和添加文本节点来包装内容 String ,然后用新创建的元素来替代原始文本节点(第 22-24 行)。


清单 3. Crimson DOM 顶级代码
 1 // parse the document from input stream 
 2 System.setProperty("javax.xml.parsers.DocumentBuilderFactory", 
 3   "org.apache.crimson.jaxp.DocumentBuilderFactoryImpl"); 
 4 DocumentBuilderFactory dbf = DocumentBuilderFactoryImpl.newInstance(); 
 5 dbf.setNamespaceAware(true); 
 6 DocumentBuilder builder = dbf.newDocumentBuilder(); 
 7 Document doc = builder.parse(in); 
 8 // recursively walk and modify document 
 9 modifyElement(doc.getDocumentElement()); 
10 // write the document to output stream 
11 ((XmlDocument)doc).write(out); 

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:Java XML Java

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接