Package org.gudy.azureus2.pluginsimpl.local.utils.xml.simpleparser

Source Code of org.gudy.azureus2.pluginsimpl.local.utils.xml.simpleparser.SimpleXMLParserDocumentNodeImpl

/*
* File    : SimpleXMLParserDocumentNodeImpl.java
* Created : 5 Oct. 2003
* By      : Parg
*
* Azureus - a Java Bittorrent client
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details ( see the LICENSE file ).
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
package org.gudy.azureus2.pluginsimpl.local.utils.xml.simpleparser;

import java.io.PrintWriter;
import java.util.*;

import org.w3c.dom.*;

import org.gudy.azureus2.plugins.utils.xml.simpleparser.SimpleXMLParserDocumentAttribute;
import org.gudy.azureus2.plugins.utils.xml.simpleparser.SimpleXMLParserDocumentNode;


public class
SimpleXMLParserDocumentNodeImpl
  implements SimpleXMLParserDocumentNode
{
  protected SimpleXMLParserDocumentImpl    document;
  protected Node          node;
 
  protected SimpleXMLParserDocumentNode[]    kids;
 
    // node is an ELEMENT_NODE
 
  protected
  SimpleXMLParserDocumentNodeImpl(
    SimpleXMLParserDocumentImpl  _doc,
    Node      _node )
  {
    document    = _doc;
    node      = _node;
  }
 
  protected Node
  getNode()
  {
    return( node );
  }
 
  public String
  getName()
  {
    return( node.getLocalName());
  }
 
  public String
  getFullName()
  {
    return( node.getNodeName());
  }
 
  public String
  getNameSpaceURI()
  {
    return( node.getNamespaceURI());
  }
 
  public String
  getValue()
  {
  //  if ( getChildren().length > 0 ){
  //   
  //    return( null);
       
    if ( node.getNodeType() == Node.PROCESSING_INSTRUCTION_NODE ){
     
      return( node.getNodeValue());
    }
   
    String  res = "";
   
        for (Node child = node.getFirstChild(); child != null;child = child.getNextSibling()){
     
            int  type = child.getNodeType();
     
      if ( type == Node.CDATA_SECTION_NODE ||
         type == Node.TEXT_NODE ||
         type == Node.NOTATION_NODE ){
       
        String str = child.getNodeValue();
       
        res += str;
      }
        } 
   
    return( res );
  }
 
  public SimpleXMLParserDocumentAttribute
  getAttribute(
    String    name )
  {
    SimpleXMLParserDocumentAttribute[]  attributes = getAttributes();
   
    for (int i=0;i<attributes.length;i++){
     
      if ( attributes[i].getName().equalsIgnoreCase( name )){
       
        return( attributes[i] );
      }
    }
   
    return( null );
  }
 
  public SimpleXMLParserDocumentAttribute[]
  getAttributes()
  {
    Vector  v = new Vector();
   
      // for element nodes the attributes AREN'T child elements, rather they are
      // accessed via "getAttributes"
   
    if ( node.getNodeType() == Node.ELEMENT_NODE ){
     
      NamedNodeMap atts = node.getAttributes();
     
            for (int i = 0; i < atts.getLength(); i++){
       
                Node child = atts.item(i);
       
        v.addElement( new SimpleXMLParserDocumentAttributeImpl( child.getNodeName(), child.getNodeValue()));
            }
    }

        for (Node child = node.getFirstChild(); child != null;child = child.getNextSibling()){
     
            int  type = child.getNodeType();
     
      if ( type == Node.ATTRIBUTE_NODE ){
       
        v.addElement( new SimpleXMLParserDocumentAttributeImpl( child.getNodeName(), child.getNodeValue()));
      }
    }
   
    SimpleXMLParserDocumentAttributeImpl[]  res = new SimpleXMLParserDocumentAttributeImpl[v.size()];
   
    v.copyInto( res );
   
    return( res );
  }


  public SimpleXMLParserDocumentNode[]
  getChildren()
  {
    if ( kids == null ){
     
      kids = document.parseNode(node,true);
    }
   
    return( kids );
  }
 
  public SimpleXMLParserDocumentNode
  getChild(
    String    name )
  {
    SimpleXMLParserDocumentNode[]  kids = getChildren();
   
    for (int i=0;i<kids.length;i++){
     
      if ( kids[i].getName().equalsIgnoreCase( name )){
       
        return( kids[i] );
      }
    }
   
    return( null );
  }
 
  public void
  print()
  {
    PrintWriter  pw = new PrintWriter( System.out );
   
    print( pw );
   
    pw.flush();
  }
 
  public void
  print(
    PrintWriter  pw )
  {
    print( pw, "" );
  }
 
  protected void
  print(
    PrintWriter  pw,
    String    indent )
  {
    String  attr_str = "";
   
    SimpleXMLParserDocumentAttribute[]  attrs = getAttributes();
   
    for (int i=0;i<attrs.length;i++){
      attr_str += (i==0?"":",")+attrs[i].getName() + "=" + attrs[i].getValue();
    }
   
    pw.println( indent + getName() + ":" + attr_str + " -> " + getValue());
   
    SimpleXMLParserDocumentNode[]  kids = getChildren();
   
    for (int i=0;i<kids.length;i++){
     
      ((SimpleXMLParserDocumentNodeImpl)kids[i]).print( pw, indent + "  " );
    }
  }
   

  /*
        switch (type) {
        case Node.ATTRIBUTE_NODE:
            out.print("ATTR:");
            printlnCommon(n);
            break;
        case Node.CDATA_SECTION_NODE:
            out.print("CDATA:");
            printlnCommon(n);
            break;
        case Node.COMMENT_NODE:
            out.print("COMM:");
            printlnCommon(n);
            break;
        case Node.DOCUMENT_FRAGMENT_NODE:
            out.print("DOC_FRAG:");
            printlnCommon(n);
            break;
        case Node.DOCUMENT_NODE:
            out.print("DOC:");
            printlnCommon(n);
            break;
        case Node.DOCUMENT_TYPE_NODE:
            out.print("DOC_TYPE:");
            printlnCommon(n);

            // Print entities if any
            NamedNodeMap nodeMap = ((DocumentType)n).getEntities();
            indent += 2;
            for (int i = 0; i < nodeMap.getLength(); i++) {
                Entity entity = (Entity)nodeMap.item(i);
                echo(entity);
            }
            indent -= 2;
            break;
        case Node.ELEMENT_NODE:
            out.print("ELEM:");
            printlnCommon(n);

            // Print attributes if any.  Note: element attributes are not
            // children of ELEMENT_NODEs but are properties of their
            // associated ELEMENT_NODE.  For this reason, they are printed
            // with 2x the indent level to indicate this.
            NamedNodeMap atts = n.getAttributes();
            indent += 2;
            for (int i = 0; i < atts.getLength(); i++) {
                Node att = atts.item(i);
                echo(att);
            }
            indent -= 2;
            break;
        case Node.ENTITY_NODE:
            out.print("ENT:");
            printlnCommon(n);
            break;
        case Node.ENTITY_REFERENCE_NODE:
            out.print("ENT_REF:");
            printlnCommon(n);
            break;
        case Node.NOTATION_NODE:
            out.print("NOTATION:");
            printlnCommon(n);
            break;
        case Node.PROCESSING_INSTRUCTION_NODE:
            out.print("PROC_INST:");
            printlnCommon(n);
            break;
        case Node.TEXT_NODE:
            out.print("TEXT:");
            printlnCommon(n);
            break;
        default:
            out.print("UNSUPPORTED NODE: " + type);
            printlnCommon(n);
            break;
        }

        // Print children if any
        indent++;
        for (Node child = n.getFirstChild(); child != null;
             child = child.getNextSibling()) {
            echo(child);
        }
        indent--;
  }
*/
TOP

Related Classes of org.gudy.azureus2.pluginsimpl.local.utils.xml.simpleparser.SimpleXMLParserDocumentNodeImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.