📄 domxml.java
字号:
/* * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * [Additional notices, if required by prior licensing conditions] * */package org.apache.naming.util;import java.io.*;import java.net.*;import java.util.*;import java.security.*;import org.apache.tomcat.util.IntrospectionUtils;import javax.xml.parsers.*;/* Yes, it's using DOM */import org.w3c.dom.*;import org.xml.sax.*;// moved from jk2 config package. /** * * @author Costin Manolache */public class DomXml { String file; String name; // -------------------- Settings -------------------- /** */ public void setFile( String file ) { this.file=file; } /** */ public void setName( String name ) { this.name=name; } // -------------------- Implementation -------------------- Node domN; /** Return the top level node */ public Node getNode() { return domN; } // -------------------- ant wrapper -------------------- public void execute() { try { if( file== null) { log.error("No file attribute"); return; } File docF=new File(file); Document doc=readXml(docF); if( doc == null ) return; domN = doc.getDocumentElement(); if( domN==null ) { log.error("Can't find the root node"); return; } } catch( Exception ex ) { ex.printStackTrace(); } } private static org.apache.commons.logging.Log log= org.apache.commons.logging.LogFactory.getLog( DomXml.class ); // -------------------- DOM utils -------------------- /** Get the content of a node */ public static String getContent(Node n ) { if( n==null ) return null; Node n1=n.getFirstChild(); // XXX Check if it's a text node String s1=n1.getNodeValue(); return s1.trim(); } /** Get the first child */ public static Node getChild( Node parent, String name ) { if( parent==null ) return null; Node first=parent.getFirstChild(); if( first==null ) return null; for (Node node = first; node != null; node = node.getNextSibling()) { //System.out.println("getNode: " + name + " " + node.getNodeName()); if( name.equals( node.getNodeName() ) ) { return node; } } return null; } /** Get the first child's content ( i.e. it's included TEXT node ) */ public static String getChildContent( Node parent, String name ) { Node first=parent.getFirstChild(); if( first==null ) return null; for (Node node = first; node != null; node = node.getNextSibling()) { //System.out.println("getNode: " + name + " " + node.getNodeName()); if( name.equals( node.getNodeName() ) ) { return getContent( node ); } } return null; } /** Get the node in the list of siblings */ public static Node getNext( Node current ) { Node first=current.getNextSibling(); String name=current.getNodeName(); if( first==null ) return null; for (Node node = first; node != null; node = node.getNextSibling()) { //System.out.println("getNode: " + name + " " + node.getNodeName()); if( name.equals( node.getNodeName() ) ) { return node; } } return null; } public static class NullResolver implements EntityResolver { public InputSource resolveEntity (String publicId, String systemId) throws SAXException, IOException { if( log.isTraceEnabled()) log.trace("ResolveEntity: " + publicId + " " + systemId); return new InputSource(new StringReader("")); } } public void saveXml( Node n, File xmlF ) { } public static Document readXml(File xmlF) throws SAXException, IOException, ParserConfigurationException { if( ! xmlF.exists() ) { log.error("No xml file " + xmlF ); return null; } DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setValidating(false); dbf.setIgnoringComments(false); dbf.setIgnoringElementContentWhitespace(true); //dbf.setCoalescing(true); //dbf.setExpandEntityReferences(true); DocumentBuilder db = null; db = dbf.newDocumentBuilder(); db.setEntityResolver( new NullResolver() ); // db.setErrorHandler( new MyErrorHandler()); Document doc = db.parse(xmlF); return doc; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -