package com.wy.parserpc;
import java.util.Stack;
public class ParseRpc {
public static void main(String[] args) {
String input = "{struct:ui={array:{int:35},{struct:bf=bf,t6=r4},{string:v4},{string:v3},n},cb={int:33},aa={struct:ec=vb},cc={int:33},ee=ff,df={struct:kk={struct:vv={struct:nn=rr}}}}";
process(input);
}
public static void process(String target) {
StringBuilder result = new StringBuilder();
Stack<Parser> typeStack = new Stack<Parser>();
StringBuilder temp = new StringBuilder();
for (int i = 0; i < target.length(); i++) {
char ch = target.charAt(i);
switch (ch) {
case '{':
break;
case ':':
typeStack.push(ParserFactory.getParser(temp.toString().trim()));
temp.delete(0, temp.length());
break;
case '}':
Parser parser = typeStack.pop();
if (typeStack.isEmpty()) {
parser.process(ch, temp.toString().trim());
result.append(parser.getResult());
} else {
parser.process(ch, temp.toString().trim());
typeStack.peek().temp = parser.getResult();
}
temp.delete(0, temp.length());
break;
case ',':
Parser parserL = typeStack.peek();
parserL.process(ch, temp.toString().trim());
temp.delete(0, temp.length());
break;
case '=':
Parser parserE = typeStack.peek();
parserE.process(ch, temp.toString().trim());
temp.delete(0, temp.length());
break;
default:
temp.append(ch);
}
}
System.out.println(result.toString());
}
}
class FlagPoint {
String value;
int index;
public FlagPoint(String value, int index) {
this.value = value;
this.index = index;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
class ParserFactory {
public static Parser getParser(String name) {
if ("int".equals(name)) {
return new IntParser("int");
} else if ("string".equals(name)) {
return new StringParser("string");
} else if ("struct".equals(name)) {
return new StructParser("struct");
} else {
return new ArrayParser("array");
}
}
}
j2se练习 xml 解析
需积分: 3 91 浏览量
2010-06-06
22:29:06
上传
评论
收藏 12KB RAR 举报
eaglewy
- 粉丝: 1
- 资源: 15
最新资源
- 织梦cms站长导航网站源码.zip
- 基于SSM+MySQL的网络投票调查问卷系统源码+数据库(java期末大作业).zip
- 基于jsp+servlet的宠物商城网站系统源码+数据库(java期末大作业).zip
- 基于Python+Tensorflow实现声纹识别+源代码+文档说明.zip
- java-leetcode题解之第112题路径总和.zip
- java-leetcode题解之第111题二叉树的最小深度.zip
- java-leetcode题解之第110题平衡二叉树.zip
- java-leetcode题解之第109题有序链表转换二叉搜索树.zip
- java-leetcode题解之第108题将有序数组转换为二叉搜索树.zip
- java-leetcode题解之第107题二叉树的层序遍历II.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈