`
yang_min
  • 浏览: 342223 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

采用org.w3c.dom进行XML操作(二)

阅读更多
XmlOper.java

 用于操作XML文件,包括查找、新增、删除、修改结点

 /********************************************************************
 * 项目名称    :rochoc   <p>
 * 包名称      :rochoc.xml.oper <p>
 * 文件名称    :XmlOper   <p>
 * 编写者     :luoc    <p>
 * 编写日期    :2005-6-22    <p>
 * 程序功能(类)描述 : 对XML进行读写操作      <p>
 * 
 * 程序变更日期   :
 * 变更作者    :
 * 变更说明    :
********************************************************************/
package rochoc.xml.oper;

import java.util.ArrayList;

import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
 * 类名:XmlOper  <p>
 * 类描述:对XML文件进行读写操作,均为静态函数 <p>
 * 编写者 :luoc<p>
 * 编写日期 :2005-6-22<p>
 * 主要public成员变量:<p>
 * 主要public方法:   <p>
 **/

public class XmlOper
{
    /**
     *构造函数说明:       <p>
     *参数说明:   <p>
    **/
    private XmlOper()
    {        
    }
    
    /**
    * 方法名称:getNodeList<p>
    * 方法功能:获取父结点parent的所有子结点<p>
    * 参数说明:@param parent
    * 参数说明:@return <p>
    * 返回:NodeList <p>
    * 作者:luoc
    * 日期:2005-6-22
    **/
    public static NodeList getNodeList(Element parent)
    {
        return parent.getChildNodes();
    }
    
    /**
    * 方法名称:getElementsByName<p>
    * 方法功能:在父结点中查询指定名称的结点集            <p>
    * 参数说明:@param parent
    * 参数说明:@param name
    * 参数说明:@return <p>
    * 返回:Element[] <p>
    * 作者:luoc
    * 日期:2005-6-22
    **/
    public static Element [] getElementsByName(Element parent,String name)
    {
        ArrayList resList=new ArrayList();
        NodeList nl=getNodeList(parent);
        for(int i=0;i<nl.getLength();i++)
        {
            Node nd=nl.item(i);
            if(nd.getNodeName().equals(name))
            {
                resList.add(nd);
            }
        }
        Element [] res=new Element [resList.size()];
        for(int i=0;i<resList.size();i++)
        {
            res[0]=(Element)resList.get(i);
        }        
        logger.debug(parent.getNodeName()+"'s children of "+name+
                "'s num:"+res.length);
        return res;
    }
    
    /**
    * 方法名称:getElementName<p>
    * 方法功能:获取指定Element的名称            <p>
    * 参数说明:@param element
    * 参数说明:@return <p>
    * 返回:String <p>
    * 作者:luoc
    * 日期:2005-6-22
    **/
    public static String getElementName(Element element)
    {
        return element.getNodeName();
    }
    
    /**
    * 方法名称:getElementValue<p>
    * 方法功能:获取指定Element的值<p>
    * 参数说明:@param element
    * 参数说明:@return <p>
    * 返回:String <p>
    * 作者:luoc
    * 日期:2005-6-22
    **/
    public static String getElementValue(Element element)
    {
        NodeList nl=element.getChildNodes();
        for(int i=0;i<nl.getLength();i++)
        {
            if(nl.item(i).getNodeType()==Node.TEXT_NODE)//是一个Text Node
            {            
                logger.debug(element.getNodeName()+" has a Text Node.");
                return element.getFirstChild().getNodeValue();
            }
        }   
        logger.error(element.getNodeName()+" hasn't a Text Node.");
        return null;
    }
    
    /**
    * 方法名称:getElementAttr<p>
    * 方法功能:获取指定Element的属性attr的值            <p>
    * 参数说明:@param element
    * 参数说明:@param attr
    * 参数说明:@return <p>
    * 返回:String <p>
    * 作者:luoc
    * 日期:2005-6-22
    **/
    public static String getElementAttr(Element element,String attr)
    {
        return element.getAttribute(attr);
    }
    
    /**
    * 方法名称:setElementValue<p>
    * 方法功能:设置指定Element的值            <p>
    * 参数说明:@param element
    * 参数说明:@param val <p>
    * 返回:void <p>
    * 作者:luoc
    * 日期:2005-6-22
    **/
    public static void setElementValue(Element element,String val)
    {
        Node node=element.getOwnerDocument().createTextNode(val);
        NodeList nl=element.getChildNodes();
        for(int i=0;i<nl.getLength();i++)
        {
            Node nd=nl.item(i);
            if(nd.getNodeType()==Node.TEXT_NODE)//是一个Text Node
            {            
                  nd.setNodeValue(val);
                  logger.debug("modify "+element.getNodeName()+"'s node value succe.");
                  return;
            }
        }   
        logger.debug("new "+element.getNodeName()+"'s node value succe.");
        element.appendChild(node);        
    }
    
    /**
    * 方法名称:setElementAttr<p>
    * 方法功能:设置结点Element的属性<p>
    * 参数说明:@param element
    * 参数说明:@param attr
    * 参数说明:@param attrVal <p>
    * 返回:void <p>
    * 作者:luoc
    * 日期:2005-6-22
    **/
    public static void setElementAttr(Element element,
            String attr,String attrVal)
    {
        element.setAttribute(attr,attrVal);
    }
    
    
    /**
    * 方法名称:addElement<p>
    * 方法功能:在parent下增加结点child<p>
    * 参数说明:@param parent
    * 参数说明:@param child <p>
    * 返回:void <p>
    * 作者:luoc
    * 日期:2005-6-22
    **/
    public static void addElement(Element parent,Element child)
    {
        parent.appendChild(child);
    }
    
    /**
    * 方法名称:addElement<p>
    * 方法功能:在parent下增加字符串tagName生成的结点<p>
    * 参数说明:@param parent
    * 参数说明:@param tagName <p>
    * 返回:void <p>
    * 作者:luoc
    * 日期:2005-6-22
    **/
    public static void addElement(Element parent,String tagName)
    {        
        Document doc=parent.getOwnerDocument();
        Element child=doc.createElement(tagName);
        parent.appendChild(child);
    }
    
    /**
    * 方法名称:addElement<p>
    * 方法功能:在parent下增加tagName的Text结点,且值为text<p>
    * 参数说明:@param parent
    * 参数说明:@param tagName
    * 参数说明:@param text <p>
    * 返回:void <p>
    * 作者:luoc
    * 日期:2005-6-22
    **/
    public static void addElement(Element parent,String tagName,String text)
    {
        Document doc=parent.getOwnerDocument();
        Element child=doc.createElement(tagName);
        setElementValue(child,text);
        parent.appendChild(child);
    }
    
    /**
    * 方法名称:removeElement<p>
    * 方法功能:将父结点parent下的名称为tagName的结点移除<p>
    * 参数说明:@param parent
    * 参数说明:@param tagName <p>
    * 返回:void <p>
    * 作者:luoc
    * 日期:2005-6-22
    **/
    public static void removeElement(Element parent,String tagName)
    {
        logger.debug("remove "+parent.getNodeName()+"'s children by tagName "+tagName+" begin...");
        NodeList nl=parent.getChildNodes();
        for(int i=0;i<nl.getLength();i++)
        {
            Node nd=nl.item(i);
            if(nd.getNodeName().equals(tagName))
            {
                parent.removeChild(nd);
                logger.debug("remove child '"+nd+"' success.");
            }
        }
        logger.debug("remove "+parent.getNodeName()+"'s children by tagName "+tagName+" end.");
    }
    
    
    /*全局变量*/    
    static Logger logger=Logger.getLogger("XmlOper");
}

 

分享到:
评论

相关推荐

    w3c-dom.jar 包

    w3c-dom.jar 包 dom解析xml使用 包 免积分下载

    w3c 生成xml 换行实例

    首先,需要导入必要的包,包括 java.io、javax.xml.parsers、javax.xml.transform 和 org.w3c.dom 等。这些包提供了 XML 文档的解析和生成功能。 接下来,创建一个名为 XMLHandler 的类,该类中包含一个名为 create...

    Java与XML联合编程之DOM篇.rar_dom xml_dom xml java_java xml

    DOM(Document Object Model)是W3C制定的一种标准,它为XML文档提供了一个树形结构,使得程序员可以方便地访问和操作XML文档的每一个元素。本教程将深入探讨Java中使用DOM模型解析XML文件的方法。 首先,我们需要...

    DOM_XML.rar_DOM_dom xml_dom xml java_dom解析xml_java解析xml

    "DOM_dom xml_dom xml java_dom解析xml_java解析xml"这部分描述了文件的主要内容,即关于DOM(Document Object Model)在XML解析中的应用,特别是用Java进行XML处理。 DOM是一种W3C标准,用于表示XML和HTML文档的树...

    java dom 解析 xml 实例

    1. org.w3c.dom:W3C 推荐的用于 XML 标准规划文档对象模型的接口。 2. org.xml.sax:用于对 XML 进行语法分析的事件驱动的 XML 简单 API(SAX)。 3. javax.xml.parsers:解析器工厂工具,程序员获得并配置特殊的...

    java操作xml dom dom4j sax jdom

    DOM4J不仅支持DOM,还引入了XPath表达式来定位XML元素,这使得查询和操作XML变得更加直观。比如,你可以使用`DocumentHelper.parseText()`或`readFile()`方法解析XML,然后利用`selectNodes()`或`selectSingleNode()...

    android Dom解析xml文件

    在Android中,我们主要使用Java的标准库`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`来实现DOM解析。这些库提供了创建DOM解析器、解析XML文件和操作XML节点的功能。 ### 3. 实现步骤 ####...

    java 操作XML 采用(dom+dom4j)读写源码 lib包

    Java中内置的`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`接口是实现DOM解析的基础。 读取XML文件: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers...

    java平台中使用DOM解析xml文件

    1. **导入必要的库**:在Java中,DOM解析功能主要由`javax.xml.parsers`和`org.w3c.dom`包提供。因此,首先需要在代码中导入这些库: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax....

    Java与XML(一):采用DOM操作XML文件.docx

    public class DomXML { public void parseXML(String fileName) { try { DocumentBuilder domBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); InputStream input = new FileInputStream...

    java_xml.rar_XML java_java xml_java 读取 本地文件

    Java的`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类用于创建和操作DOM树。 2. SAX:SAX解析器是事件驱动的,只在需要时处理XML文档的部分内容,适合处理大型XML文件。`org.xml.sax....

    xml解析 dom方式 例子和讲解

    1. **导入库**:使用DOM解析XML时,我们需要导入javax.xml.parsers和org.w3c.dom相关的库。例如: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; ...

    java_dom解析xml xml java

    通过DOM,我们可以将整个XML文档加载到内存中,并对其进行读取、修改等操作。这种方式非常适合那些需要对XML文档进行多次访问或修改的应用场景。 #### 标题解释 标题“java_dom解析xml xml java”表明了本文档的...

    dom4j api 参考手册

    org.dom4j.dom An implementation of the dom4j API which also supports the W3C object model. org.dom4j.dtd Classes to represent the DTD declarations. org.dom4j.io Provides input and output via SAX and ...

    Android使用DOM方式解析XML

    在Android中,我们通常使用`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类来实现DOM解析。 步骤一:导入必要的库 在Android项目中,我们需要导入以下库以使用DOM解析XML: ```java import...

    Chenso:Chenso 是一个 org.w3c.dom XML wrapperparser 库

    Chenso 是一个 org.w3c.dom XML 包装器/解析器库。 基本用法 运行测试 视窗 gradlew test Unix ./gradlew test 建造 视窗 gradlew.bat build Unix ./gradlew build 用法 获取 XML 元素中名称的第一个值 String ...

    xml.rar_dom操作xml_java 操作 xml_java xml_sax_xml

    - `org.w3c.dom`包提供了DOM的相关接口和类,如`DocumentBuilderFactory`用于创建`DocumentBuilder`,`DocumentBuilder`用于解析XML并返回`Document`对象。 - `Document`对象代表整个XML文档,可以获取根元素(`...

    xml.rar_java xml_操作 xml

    Java中的`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`类可用于构建和操作DOM模型。例如: ```java DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); ...

    JAVA_dom解析xml

    在Java中,DOM解析主要涉及`javax.xml.parsers`和`org.w3c.dom`这两个包。首先,我们需要创建一个`DocumentBuilderFactory`实例,然后使用这个工厂来获取`DocumentBuilder`对象。`DocumentBuilder`负责构建`Document...

    dom解析XML,普通解析

    DOM(Document Object Model)是一种基于树形...综上所述,DOM解析XML是一种强大的技术,适用于需要对XML数据进行全面控制和灵活操作的场景。了解和熟练掌握DOM解析,将有助于我们在处理XML文档时提高效率和灵活性。

Global site tag (gtag.js) - Google Analytics