⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nodedescription.java

📁 这是一个轻便的j2ee的web应用框架,是一个在多个项目中运用的实际框架,采用struts,hebinate,xml等技术,有丰富的tag,role,navigation,session,dictio
💻 JAVA
字号:
package com.esimple.framework.util.xml;

import java.util.ArrayList;
import java.util.StringTokenizer;
import org.w3c.dom.*;

class NodeDescription
{
	
	class Pair
	{

		public String first;
		public String second;

		public Pair(String strFirst, String strSecond)
		{
			first = strFirst;
			second = strSecond;
		}
	}

    public static final short NODE_ELEMENT = 0;
    public static final short NODE_ATTR = 1;
    public static final short NODE_ANY = 2;
    public Attr m_attr;
    private String m_strNodeName;
    private ArrayList m_alAttrs;
    private short m_type;

    public NodeDescription(String xPathItem)
    {
        m_attr = null;
        m_strNodeName = "";
        m_alAttrs = new ArrayList();
        m_type = 0;
        if(xPathItem.indexOf("*") == 0)
            m_type = 2;
        else
        if(xPathItem.indexOf("@") == 0)
        {
            m_strNodeName = "";
            m_type = 1;
            StringTokenizer stk = new StringTokenizer(xPathItem, "@");
            if(stk.hasMoreTokens())
                m_alAttrs.add(new Pair(stk.nextToken(), ""));
        } else
        {
            m_type = 0;
            StringTokenizer stk = new StringTokenizer(xPathItem, "[@=\"']");
            if(stk.hasMoreTokens())
                m_strNodeName = stk.nextToken();
            String strAttrName;
            String strAttrVal;
            for(; stk.hasMoreTokens(); m_alAttrs.add(new Pair(strAttrName, strAttrVal)))
            {
                strAttrName = stk.hasMoreTokens() ? stk.nextToken() : "";
                strAttrVal = stk.hasMoreTokens() ? stk.nextToken() : "";
            }

        }
    }

    public boolean equals(Element ele)
    {
        if(ele == null)
            return false;
        switch(m_type)
        {
        case 2: // '\002'
        default:
            break;

        case 0: // '\0'
            if(!ele.getNodeName().equals(m_strNodeName))
                return false;
            for(int i = 0; i < m_alAttrs.size(); i++)
            {
                String strAttrName = ((Pair)m_alAttrs.get(i)).first;
                String strAttrVal = ((Pair)m_alAttrs.get(i)).second;
                if(strAttrVal.equals(""))
                    return ele.hasAttribute(strAttrName);
                if(!strAttrVal.equals(ele.getAttribute(strAttrName)))
                    return false;
            }

            break;

        case 1: // '\001'
            String strAttrName = ((Pair)m_alAttrs.get(0)).first;
            if(!ele.hasAttribute(strAttrName))
                return false;
            m_attr = ele.getAttributeNode(strAttrName);
            break;
        }
        return true;
    }

    public short getType()
    {
        return m_type;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -