-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathxml.java
More file actions
64 lines (60 loc) · 1.55 KB
/
Copy pathxml.java
File metadata and controls
64 lines (60 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package javaforce.utils;
import java.util.*;
import javaforce.*;
/** xml CLI.
*
* @author peter.quiring
*/
public class xml {
public static void main(String[] args) {
if (args.length == 0) {
usage();
}
switch (args[0]) {
case "read":
if (args.length < 3) {
usage();
}
XML xml = new XML();
if (!xml.read(args[1])) {
error("read file failed");
}
XML.XMLTag tag = xml.getTag(makePath(args[2]));
if (tag == null) {
error("tag not found");
}
if (args.length < 4) {
System.out.print(tag.content);
} else {
String param = tag.getArg(args[3]);
if (param == null) error("param not found");
System.out.print(param);
}
break;
default:
System.out.println("Error:Unknown command");
System.exit(1);
break;
}
}
private static void usage() {
System.out.println("Usage:xml {cmd} [args]");
System.out.println(" cmd:read {xml-file} {tag-path,...} [{param}]");
System.exit(1);
}
private static void error(String msg) {
System.out.println("Error:" + msg);
System.exit(1);
}
private static String[] makePath(String[] args, int start, int end) {
ArrayList<String> list = new ArrayList<>();
if (end == -1) end = args.length;
for(int i=start;i<end;i++) {
list.add(args[i]);
}
return list.toArray(JF.StringArrayType);
}
private static String[] makePath(String arg) {
return makePath(arg.split(","), 0, -1);
}
}