教程集 www.jiaochengji.com
教程集 >  脚本编程  >  java  >  正文 Java命令行配置加载模块详解

Java命令行配置加载模块详解

发布时间:2016-10-10   编辑:jiaochengji.com
教程集为您提供Java命令行配置加载模块详解等资源,欢迎您收藏本站,我们将为您提供最新的Java命令行配置加载模块详解资源
下面我们来看一篇关于Java命令行配置加载模块的介绍,这个是需要动态从xml中加载模块了,具体的配置如下,本示例支持多语言的哦。

最近在用Java,写了一个动态从xml中加载命令行提示,支持多语言的模块

package com.common;

import org.apache.commons.cli.*;
import org.dom4j.io.SAXReader;

import java.io.*;
import java.util.Iterator;
import java.util.List;

/**
 * Created by LonelyRain on 16/7/12.
 */

public class ParseCommand {
    static Options optionList;

    public static CommandLine ParseOption(String[] args) {

        Options options = new Options();
        CommandLine UserCommand = null;
        try {
            //根据args对比XML内的命令
            UserCommand = ProgramOptionList.loading(options, args);
        } catch (Exception error) {
            System.err.println("Error:\r\n\t==>" error.getMessage());
            System.exit(0);
        }
        return UserCommand;
    }

    public static void help() throws Exception {
        String ProgramName = "";
        //创建解析器

        InputStream inputFile = Thread.currentThread().getContextClassLoader().getResourceAsStream("xml/CommandList.xml");
        SAXReader reader = new SAXReader();
        org.dom4j.Document document = reader.read(inputFile);

        //获取根
        org.dom4j.Element root = document.getRootElement();
        ProgramName = root.attributeValue("name");
        HelpFormatter hf = new HelpFormatter();
        hf.printHelp(ProgramName, optionList);

    }


    public static class ProgramOptionList {
        static CommandLine CommandList;


        public static CommandLine loading(Options defaultOptions, String[] args) throws Exception {
            CommandLineParser CommandParser = new DefaultParser();
            __loadConfigFile(defaultOptions, "en");
            CommandLine UserCommand = CommandParser.parse(defaultOptions, args);
            optionList = defaultOptions;
            if (UserCommand.hasOption("l")) {
                Options otherOptions = new Options();
                __loadConfigFile(otherOptions, UserCommand.getOptionValue("l"));
                optionList = otherOptions;
            }
            CommandList = UserCommand;
            return CommandList;
        }

        private static void __loadConfigFile(Options options, String language) throws Exception {
            //创建解析器
            SAXReader reader = new SAXReader();

            //读取文档
            File inputFile = new File("/Users/SilverRat/开发/java/DomainSearcher/src/xml/CommandList.xml");
            org.dom4j.Document document = reader.read(inputFile);

            //获取根
            org.dom4j.Element root = document.getRootElement();

            //获取子节点
            List<org.dom4j.Element> list = root.elements();

            for (org.dom4j.Element e : list) {
                String shortCMD = "";
                String longCMD = "";
                String describetion = "";
                boolean with_args = false;
                for (Iterator s = e.elementIterator(); s.hasNext(); ) {
                    org.dom4j.Element commandInfo = (org.dom4j.Element) s.next();
                    switch (commandInfo.getName()) {
                        case "short":
                            shortCMD = commandInfo.getStringValue();
                            break;
                        case "long":
                            longCMD = commandInfo.getStringValue();
                            break;
                        case "describetion":
                            if (commandInfo.attributeValue("lang").equals(language)) {
                                describetion = commandInfo.getStringValue();
                            }
                            break;
                        case "with_args":
                            with_args = Boolean.parseBoolean(commandInfo.getStringValue());
                            break;
                    }
                }
                options.addOption(shortCMD, longCMD, with_args, describetion);
            }
        }

    }
}
上面的是解析模块
下面的是配置的xml文件

<?xml version="1.0" encoding="utf-8" ?>
<command_list name="DomainSearcher">
    <command id="0">
        <short>h</short>
        <long>help</long>
        <with_args>false</with_args>
        <describetion lang="en">Help Information</describetion>
        <describetion lang="zh">帮助信息</describetion>
    </command>
    <command id="1">
        <short>t</short>
        <long>target</long>
        <with_args>true</with_args>
        <describetion lang="en">Your Target Host/IP</describetion>
        <describetion lang="zh">目标域名/IP</describetion>
    </command>
    <command id="2">
        <short>d</short>
        <long>dict</long>
        <with_args>true</with_args>
        <describetion lang="en">Your Dictionary</describetion>
        <describetion lang="zh">加载字典路径</describetion>
    </command>
    <command id="3">
        <short>l</short>
        <long>language</long>
        <with_args>true</with_args>
        <describetion lang="en">选择程序语言(en / zh)</describetion>
        <describetion lang="zh">Choose Display Language(en / zh)</describetion>
    </command>
</command_list>


下面是运用例子

import ParseCommand.*;
public class DomainSearcher {
    public static void main(String[] args) {
        ParseCommand parsecommand = new ParseCommand();
        parsecommand.Parse(args);
    }


行效果:

<center></center>

您可能感兴趣的文章:
php为什么不解析
PHP程序在php执行正常,在CMD报扩展加载错误
Ubuntu系统下设置Java环境变量图文教程
PHP 常用命令行
Golang包管理详解
ubuntu下配置php服务器环境
go语言 环境搭建
动态网页制作技术PHP的十个应用技巧
Python自定义模块
python怎么查看安装的模块有哪些

[关闭]
~ ~