首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

XML种文件和监听方法 XMLFileListener

2012-10-31 
XML类文件和监听方法 XMLFileListenerimport java.io.Fileimport java.util.Iteratorimport org.apache.

XML类文件和监听方法 XMLFileListener
import java.io.File;
import java.util.Iterator;
import org.apache.log4j.Logger;
import org.dom4j.Element;
import com.huawei.ngbss.common.XMLParserHelperDom4j;
public class XMLFileListener extends FileListener
{
    private Logger logger = Logger.getLogger(XMLFileListener.class);
    private EnumerateFile enumerateFile;

    XMLFileListener(String filePath)
    {
        if (filePath != null)
        {
            this.file = new File(filePath);
            if (!file.isFile())
            {
                logger.error("The file[" + filePath
                        + "] does not exist,please check it.");
                return;
            }
            enumerateFile = new EnumerateFile(filePath);
        }
    }

    public boolean isFileUpdate()
    {
        return enumerateFile.getEnumFile().lastModified() > enumerateFile.getEnumLastModefieds();
               
    }

    public void loadFile()
    {
        loadXml();
    }

    public String getPropertyValue(String key)
    {
        return getTransferValue(key);
    }

    /**
     * 加载枚举文件
     */
    public void loadXml()
    {
        // 更新时间
        enumerateFile.setEnumLastModefieds(enumerateFile.getEnumFile()
                .lastModified());
        // 解析XML
        Element rootElement = XMLParserHelperDom4j.parserXML(enumerateFile
                .getEnumFile().getPath());
        if (rootElement == null)
        {
            logger.error("The file[" + enumerateFile.getEnumFile().getPath()
                    + "] parser error,please check it again.");
        }
        else
        {
            // 将解析的文档的根节点保存,供以后读取所用
            enumerateFile.setEnumElement(rootElement);
            logger.info("The properties file["
                    + enumerateFile.getEnumFile().getPath()
                    + "] load complete.");
        }
    }
    public String getTransferValue(String key)
    {
        // 由 Type + OriginallyValue + value 或 Type + TransferAttr + value组成。
        String[] keys = key.split("\\|\\|");
        // 没有传key,则返回空
        if (keys == null)
        {
            return null;
        }
        String transferValue = keys[2];
        Element transferAttrs = XMLParserHelperDom4j.getElement(
                enumerateFile.getEnumElement(), null, keys[0]);
        if(transferAttrs==null)
        {
            return null;
        }
        for(Iterator<?> i=transferAttrs.elementIterator();i.hasNext();)
        {
            Element trnasfer=(Element) i.next();
            if(trnasfer==null)
           
                continue;
            String orig_str = XMLParserHelperDom4j.getText(trnasfer,
                    XMLParserHelperDom4j.ORIGINALL_VALUE);
            String tran_str = XMLParserHelperDom4j.getText(trnasfer,
                    XMLParserHelperDom4j.TRANSFER_VALUE);
           
            if (XMLParserHelperDom4j.ORIGINALL_VALUE.equals(keys[1])
                    && keys[2].equals(orig_str))
            {
                transferValue = tran_str;
                return transferValue;
            }
            else if (XMLParserHelperDom4j.TRANSFER_VALUE.equals(keys[1])
                    && keys[2].equals(tran_str))
            {
                transferValue = orig_str;
                return transferValue;
            }
        }
        logger.warn("Cannot found the value [" + keys[2] + "] by node["
                + keys[0] + " in xml file]");
        return transferValue;
        }
 
}

热点排行