命令配置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 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文件

h

help

false

Help Information

帮助信息

t

target

true

Your Target Host/IP

目标域名/IP

d

dict

true

Your Dictionary

加载字典路径

l

language

true

选择程序语言(en / zh)

Choose Display Language(en / zh)

下面是运用例子

import ParseCommand.*;

public class DomainSearcher {

public static void main(String[] args) {

ParseCommand parsecommand = new ParseCommand();

parsecommand.Parse(args);

}

行效果:

aa741c341a305f79e04c8c25ac2fe870.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值