View Javadoc
1 package com.thoughtworks.xstream.xml.dom; 2 3 import com.thoughtworks.xstream.xml.XMLReader; 4 import org.w3c.dom.*; 5 6 import java.util.ArrayList; 7 import java.util.HashMap; 8 import java.util.List; 9 import java.util.Map; 10 11 public class DomXMLReader implements XMLReader { 12 13 private Element currentElement; 14 private List childElementsByIndex; 15 private Map childElementsByName; 16 private StringBuffer textBuffer; 17 18 public DomXMLReader(Element rootElement) { 19 setCurrent(rootElement); 20 } 21 22 public DomXMLReader(Document document) { 23 setCurrent(document.getDocumentElement()); 24 } 25 26 public String name() { 27 return currentElement.getTagName(); 28 } 29 30 public String text() { 31 //return currentElement.getText(); 32 return textBuffer.toString(); 33 } 34 35 public String attribute(String name) { 36 Attr attribute = currentElement.getAttributeNode(name); 37 return attribute == null ? null : attribute.getValue(); 38 } 39 40 public int childCount() { 41 return childElementsByIndex.size(); 42 } 43 44 public void child(int index) { 45 setCurrent(childElementsByIndex.get(index)); 46 } 47 48 public void child(String elementName) { 49 setCurrent(childElementsByName.get(elementName)); 50 } 51 52 public void pop() { 53 setCurrent(currentElement.getParentNode()); 54 } 55 56 private void setCurrent(Object currentElementObj) { 57 this.currentElement = (Element) currentElementObj; 58 childElementsByIndex = new ArrayList(); 59 childElementsByName = new HashMap(); 60 textBuffer = new StringBuffer(); 61 NodeList childNodes = currentElement.getChildNodes(); 62 int length = childNodes.getLength(); 63 for (int i = 0; i < length; i++) { 64 Node childNode = childNodes.item(i); 65 if (childNode instanceof Element) { 66 Element element = (Element) childNode; 67 childElementsByIndex.add(element); 68 childElementsByName.put(element.getTagName(), element); 69 } else if (childNode instanceof Text) { 70 Text text = (Text) childNode; 71 textBuffer.append(text.getData()); 72 } 73 } 74 } 75 76 public boolean childExists(String elementName) { 77 return childElementsByName.containsKey(elementName); 78 } 79 80 }

This page was automatically generated by Maven