Changeset 13541


Ignore:
Timestamp:
2007-01-08T16:16:26+13:00 (15 years ago)
Author:
shaoqun
Message:

added the method that output a xml node to a nicely formatted string

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/util/GSXML.java

    r13270 r13541  
    797797    printXMLNode(e, 0) ;
    798798    }
     799
     800    public static String xmlNodeToString(Node e){
     801        StringBuffer sb = new StringBuffer("");
     802        xmlNodeToString(sb,e,0);
     803    return sb.toString();
     804    }
     805
     806    private static void xmlNodeToString(StringBuffer sb, Node e, int depth){
     807     
     808    for (int i=0 ; i<depth ; i++)
     809        sb.append(' ') ;
     810
     811    if (e.getNodeType() == Node.TEXT_NODE){
     812        sb.append("text") ;
     813        return ;
     814    }
     815   
     816    sb.append('<');
     817    sb.append(e.getNodeName());
     818    NamedNodeMap attrs = e.getAttributes();
     819    for (int i = 0; i < attrs.getLength(); i++) {
     820        Node attr = attrs.item(i);
     821        sb.append(' '); 
     822        sb.append(attr.getNodeName());
     823        sb.append("=\"");
     824        sb.append(attr.getNodeValue());   
     825        sb.append('"');
     826    }
     827
     828    NodeList children = e.getChildNodes();
     829
     830    if (children == null || children.getLength() == 0)
     831        sb.append("/>\n") ;
     832    else {
     833       
     834        sb.append(">\n") ;
     835       
     836        int len = children.getLength();
     837        for (int i = 0; i < len; i++) {
     838        xmlNodeToString(sb,children.item(i), depth + 1);
     839        }
     840       
     841        for (int i=0 ; i<depth ; i++)
     842         sb.append(' ') ;
     843       
     844         sb.append("</" + e.getNodeName() + ">\n");
     845    }   
     846
     847
     848    }
    799849   
    800850    public static void printXMLNode(Node e, int depth) { //recursive method call using DOM API...
Note: See TracChangeset for help on using the changeset viewer.