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

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

 2009-11-05 00:00:00 来源:WEB开发网   
核心提示: 第二个代码块(第 6-7 行)只是将文档的根元素传递给我马上要谈到的递归修改方法,这些代码与本文中所有文档模型的代码在本质上是相同的,Java 中的 XML: Java 文档模型的用法(3),所以在剩余的示例中我将跳过它,不再做任何讨论, Xerces 的 modify 方法只使用标准 DOM

第二个代码块(第 6-7 行)只是将文档的根元素传递给我马上要谈到的递归修改方法。这些代码与本文中所有文档模型的代码在本质上是相同的,所以在剩余的示例中我将跳过它,不再做任何讨论。

第三个代码块(第 8-11 行)处理将文档作为文本写入输出流。这里, OutputFormat 类包装文档,并为格式化生成的文本提供了多种选项。 XMLSerializer 类处理输出文本的实际生成。

Xerces 的 modify 方法只使用标准 DOM 接口,所以它还与任何其它 DOM 实现兼容。清单 2 显示了代码。


清单 2. DOM Modify 方法
 1 protected void modifyElement(Element element) { 
 2  // loop through child nodes 
 3  Node child; 
 4  Node next = (Node)element.getFirstChild(); 
 5  while ((child = next) != null) { 
 6   // set next before we change anything 
 7   next = child.getNextSibling(); 
 8   // handle child by node type 
 9   if (child.getNodeType() == Node.TEXT_NODE) { 
10    // trim whitespace from content text 
11    String trimmed = child.getNodeValue().trim(); 
12    if (trimmed.length() == 0) { 
13     // delete child if nothing but whitespace 
14     element.removeChild(child); 
15    } else { 
16     // create a "text" element matching parent namespace 
17     Document doc = element.getOwnerDocument(); 
18     String prefix = element.getPrefix(); 
19     String name = (prefix == null) ? "text" : (prefix + ":text"); 
20     Element text = 
21      doc.createElementNS(element.getNamespaceURI(), name); 
22     // wrap the trimmed content with new element 
23     text.appendChild(doc.createTextNode(trimmed)); 
24     element.replaceChild(text, child); 
25    } 
26   } else if (child.getNodeType() == Node.ELEMENT_NODE) { 
27    // handle child elements with recursive call 
28    modifyElement((Element)child); 
29   } 
30  } 
31 } 

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

Tags:Java XML Java

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