`
xinyoulinglei
  • 浏览: 126635 次
社区版块
存档分类
最新评论

xml文件解析(XMLNode)

    博客分类:
  • java
xml 
阅读更多
package com.huawei.bss.xml;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
* The Class XmlNode.
*/
public class XmlNode
{
   
    /** The tag name. */
    private String tagName = null;
   
    /** The parent. */
    private XmlNode parent = null;
   
    /** The attributes. */
    private Map<String, String> attributes = new LinkedHashMap<String, String>();
   
    /** The nodes. */
    private List<Object> nodes = new ArrayList<Object>();
   
    /**
     * Instantiates a new xml node.
     */
    public XmlNode()
    {
    }
   
    /**
     * Instantiates a new xml node.
     *
     * @param tagName the tag name
     */
    public XmlNode(String tagName)
    {
        this.tagName = tagName;
    }
   
    /**
     * Gets the attributes.
     *
     * @return the attributes
     */
    public Map<String, String> getAttributes()
    {
        return this.attributes;
    }
   
    /**
     * Sets the attributes.
     *
     * @param attributes the attributes
     */
    public void setAttributes(Map<String, String> attributes)
    {
        if (attributes != null)
        {
            this.attributes = attributes;
        }
    }
   
    /**
     * Gets the children.
     *
     * @return the children
     */
    public List<Object> getChildren()
    {
        return this.nodes;
    }
   
    /**
     * Gets the children by tag name.
     *
     * @param name the name
     * @return the children by tag name
     */
    public List<XmlNode> getChildrenByTagName(String name)
    {
        List<XmlNode> list = new ArrayList<XmlNode>();
        List<Object> ch = getChildren();
        for (int i = 0; i < ch.size(); ++i)
        {
            if ((ch.get(i).getClass() != XmlNode.class)
                    || (!(((XmlNode) ch.get(i)).getTagName().equals(name))))
            {
                continue;
            }
            list.add((XmlNode) ch.get(i));
        }
       
        return list;
    }
   
    /**
     * Gets the first.
     *
     * @param tag the tag
     * @return the first
     */
    public XmlNode getFirst(String tag)
    {
        List<XmlNode> tem = getChildrenByTagName(tag);
        if (tem.isEmpty())
        {
            return null;
        }
        return (tem.get(0));
    }
   
    /**
     * Gets the last.
     *
     * @param tag the tag
     * @return the last
     */
    public XmlNode getLast(String tag)
    {
        List<XmlNode> tem = getChildrenByTagName(tag);
        if (tem.isEmpty())
        {
            return null;
        }
        return (tem.get(tem.size() - 1));
    }
   
    /**
     * Gets the first.
     *
     * @return the first
     */
    public Object getFirst()
    {
        List<Object> list = getChildren();
        if (list.isEmpty())
        {
            return null;
        }
        return list.get(0);
    }
   
    /**
     * Gets the last.
     *
     * @return the last
     */
    public Object getLast()
    {
        List<Object> list = getChildren();
        if (list.isEmpty())
        {
            return null;
        }
        return list.get(list.size() - 1);
    }
   
    /**
     * Adds the node.
     *
     * @param obj the obj
     * @return the xml node
     */
    public XmlNode addNode(Object obj)
    {
        if (obj == null)
        {
            throw new IllegalArgumentException("addNode:node cant null");
        }
        this.nodes.add(obj);
        if (obj instanceof XmlNode)
        {
            ((XmlNode) obj).setParent(this);
        }
        return this;
    }
   
    /**
     * Sets the attribute.
     *
     * @param name the name
     * @param value the value
     * @return the xml node
     */
    public XmlNode setAttribute(String name, String value)
    {
        this.attributes.put(name, value);
        return this;
    }
   
    /**
     * Gets the parent.
     *
     * @return the parent
     */
    public XmlNode getParent()
    {
        return this.parent;
    }
   
    /**
     * Sets the parent.
     *
     * @param parent the new parent
     */
    void setParent(XmlNode parent)
    {
        this.parent = parent;
    }
   
    /**
     * Checks if is root.
     *
     * @return true, if is root
     */
    public boolean isRoot()
    {
        return (this.parent == null);
    }
   
    /**
     * Gets the tag name.
     *
     * @return the tag name
     */
    public String getTagName()
    {
        return this.tagName;
    }
   
    /**
     * Sets the tag name.
     *
     * @param tagName the tag name
     * @return the xml node
     */
    public XmlNode setTagName(String tagName)
    {
        this.tagName = tagName;
        return this;
    }
   
    public String getText()
    {
    if (getChildren().isEmpty())
    {
    return null;
    }
    if (getChildren().size() != 1)
    {
    throw new RuntimeException("Not leaf node,nodeName:" + getTagName());
    }
    return getChildren().get(0).toString();
    }
   
    public String getAttribute(String arrtibuteName)
    {
    return getAttributes().get(arrtibuteName);
    }
}
爱上
分享到:
评论

相关推荐

    C#解析XML文件并用WinForm显示

    要解析XML文件,C#提供了System.Xml命名空间,其中包含如XmlDocument、XmlNode、XmlElement等类,用于读取、操作和解析XML数据。 1. **使用XmlDocument解析XML** - `XmlDocument` 类是解析XML文件的核心。通过`new...

    C# XML解析方式

    根据给定文件中的标题、描述、标签以及部分内容,可以总结并深入探讨以下关于C#中XML解析的关键知识点: ### C#中的XML解析方式 #### 1. XML Text Reader(流式解析) - **简介**:在.NET框架中,`XMLTextReader`...

    xml文件解析资料汇总(个人收集)

    6. .NET Framework中的System.Xml命名空间:提供了多种XML处理类,如XmlDocument和XmlNode,支持.NET环境下的XML处理。 五、XML应用与实践 XML在Web服务(如SOAP)、配置文件(如Spring框架)、数据交换(如RSS、...

    跨平台解析XML文件 XmlNode V1.01测试版

    Mark: xml文件保存路径为已经设置的路径,默认为打开文件时的路径,也可以通过SetValue函数修改路径,详见SetValue函数说明 如果当前节点为根节点,则记录的xml文件路径将被替换 如果当前节点不是跟节点,只保存...

    VB_解析xml文件

    在VB(Visual Basic)编程中,解析XML文件是一项常见的任务,尤其在处理数据交换、配置文件或存储结构化数据时。XML(eXtensible Markup Language)是一种自定义标记语言,设计用于传输和存储数据,它具有良好的...

    C# XML文件读取示例

    `XmlReader` 是一个只读、向前只进的快速XML解析器,适用于大型XML文件。但不提供内存中的DOM树。 ```csharp using System.Xml; using (XmlReader reader = XmlReader.Create("employees.xml")) { while ...

    Visual basic 6.0 的读XML文件代码

    这段代码首先创建了一个`DOMDocument`对象,用于解析XML文件。`Load`方法用于加载XML文件,然后通过`parseError`属性检查加载是否成功。如果成功,我们可以通过遍历`DocumentElement`(根元素)及其子节点来访问XML...

    XML文件解析学习笔记···

    XML文件解析学习笔记 XML(eXtensible Markup Language)是一种标记语言,常用于存储和传输数据,尤其在Web服务和配置文件中广泛使用。Libxml是一个强大的C语言库,用于处理XML数据,包括解析、创建和修改XML文档。...

    unity xml解析工具

    Unity XML解析工具是一种在Unity引擎中处理XML数据的方法,它允许开发者从XML文件中提取信息并将其存储到合适的数据结构中,例如字典集合。XML(eXtensible Markup Language)是一种广泛使用的标记语言,用于存储和...

    XML.rar_XML解析_c# xml_xml_xml C解析_解析xml

    在C#中,我们有多种方式来解析XML文件。以下是几种常见的方法: 1. **DOM解析**:Document Object Model(DOM)是XML和HTML的标准表示模型。在C#中,我们可以使用`System.Xml`命名空间中的`XmlDocument`类来加载...

    C#解析XML文件,提取文件信息

    本篇文章将深入探讨如何使用C#解析XML文件并提取其中的信息。 首先,我们需要了解XML文件的基本结构。XML文件由一系列元素(Element)组成,每个元素可能包含子元素、文本内容以及属性。例如: ```xml &lt;age&gt;30...

    QTP操作xml文件方法

    同时,如果XML文件很大或者解析效率是关键因素,可以考虑使用流式解析器如SAX,以提高性能。 总之,QTP通过File对象和MSXML库提供了操作XML文件的能力,涵盖了从基本的文件操作到复杂的XML解析和查询。掌握这些技巧...

    VC读取并解析XML文件.并以树型控件显示其内容.zip

    在C#中,我们有强大的.NET Framework库支持处理XML文件,这使得解析和操作XML变得相当简单。 首先,我们需要导入.NET Framework中的System.Xml命名空间,它包含了处理XML所需的所有类和方法。在C#代码中添加以下...

    XML文件转成TXT文件

    转换过程的核心就是解析XML文件并提取其内容,然后将其写入TXT文件。 在C#中,我们可以使用System.Xml命名空间下的类来完成这个任务。主要涉及以下步骤: 1. 加载XML文件:使用`XmlDocument`类加载XML文件,如`Xml...

    C#中XML文件的树形显示

    一旦XML文件被加载,我们可以使用`XmlNode`类及其子类(如`XmlElement`、`XmlComment`等)来遍历和操作XML文档的结构。对于树形显示,我们通常会利用`TreeView`控件,这是Windows Forms或WPF应用程序中常见的用户...

    VB.net读取xml文件

    在VB.NET中,我们可以利用内置的类库来轻松地读取XML文件,从而获取其中的数据。下面我们将详细介绍如何在VB.NET环境下实现XML文件的读取。 首先,我们需要引入System.Xml命名空间,它包含了处理XML文档所需的所有...

    libxml2-解析xml格式文件

    这个库不仅能够解析XML(eXtensible Markup Language)格式的文件,还能生成XML文件,使得开发者在处理XML数据时有了一个高效且灵活的工具。XML作为一种通用的数据交换格式,广泛应用于网络通信、数据存储和配置文件...

    xml 解析源代码和应用

    这个原创的XML解析程序可能就是基于此命名空间中的类,如XmlDocument、XmlNode、XmlElement等,通过这些类,我们可以加载XML文档、查找元素、读取和修改元素的值。 `WindowsFormsApplication1.sln`和`WindowsForms...

    XML解析器VB

    例如,你可以用以下VB代码加载一个XML文件: ```vb Dim xmlDoc As New MSXML2.DOMDocument60 xmlDoc.async = False xmlDoc.load "path_to_your_xml_file.xml" ``` 2. **System.Xml命名空间**:在VB .NET环境...

    CE下解析XML文件

    在Windows CE(CE)环境下,解析XML文件是应用程序开发中常见的任务,特别是在处理配置数据、存储结构化信息或与服务器进行数据交换时。本篇将详细介绍如何在Visual Studio 2005(VS2005)下使用WIN32 API来实现XML...

Global site tag (gtag.js) - Google Analytics