JAVA学习笔记Day09——JAVA用正则表达式简单解析
来源:互联网 发布:密码算法库 编辑:程序博客网 时间:2024/05/24 04:59
利用简单表达式、堆栈方法处理简单XML的解析
package net.xiaohong.xml;import java.util.ArrayList;import java.util.List;import java.util.Stack;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * Project :Learon09 * Created : * Date : 2016/8/2 */public class Test01 { public static void main(String[] args) { String str = "<Books>\n" + " <Book>\n" + " <Name>JAVA基础</Name>\n" + " <Price>30.00</Price>\n" + " </Book>\n" + " <Book>\n" + " <Name>JAVA入门</Name>\n" + " <Price>30.00</Price>\n" + " </Book>\n" + " <Book>\n" + " <Name>JAVA精通</Name>\n" + " <Price>30.00</Price>\n" + " </Book>\n" + " <Book>\n" + " <Name>颈椎康复指南</Name>\n" + " <Price>90.00</Price>\n" + " </Book>\n" + "\n" + "<Book/>" + "</Books>"; Pattern pattern = Pattern.compile("<(/?)([^<>/]+)(/?)>"); Matcher matcher = pattern.matcher(str); Stack<Book> stack = new Stack<>(); Stack<Integer> last = new Stack<>(); List<Book> list = null; while (matcher.find()) { if (matcher.group(1).isEmpty()) { last.push(matcher.end()); switch (matcher.group(2)) { case "Books": list = new ArrayList<>(); break; case "Book": stack.push(new Book()); break; } if (!matcher.group(3).isEmpty()) { switch (matcher.group(2)) { case "Book": last.add(last.pop()); break; } } }else { Integer pop = last.pop();// System.out.println(pop); switch (matcher.group(2)) { case "Book": list.add(stack.pop()); break; case "Name": stack.peek().setName(str.substring(pop,matcher.start())); break; case "Price": stack.peek().setPrice(Float.parseFloat(str.substring(pop,matcher.start()))); break; } } } for (Book book : list) { System.out.println(book); } }}
0 0
- JAVA学习笔记Day09——JAVA用正则表达式简单解析
- java毕向东学习笔记——day09
- Java学习笔记——正则表达式
- Java学习笔记——正则表达式
- Java学习笔记——正则表达式
- JAVA学习笔记——正则表达式
- 黑马程序员 java学习笔记(day09)
- [Java视频笔记]day09
- Java学习笔记----正则表达式
- Java学习笔记-正则表达式
- java学习笔记---正则表达式
- java 正则表达式-学习笔记
- JAVA学习笔记-正则表达式
- Java正则表达式学习笔记
- java正则表达式学习笔记
- java正则表达式学习笔记
- Java 正则表达式学习笔记
- [学习笔记]Java正则表达式
- 表格标签
- Hdu 5785 Interesting(给你一个字符串,你可以选择这个字符串的一个子串,记为s[l...r] 你可以选择一个k(i<=k< j)将这个子串划分成两半,如果这两半都是回文串,那么答案)
- hdu-2141-Can you find it?
- PHP Lumen - 入门教程 - hello world
- MMORPG游戏的人工智能(AI)和行为树设计
- JAVA学习笔记Day09——JAVA用正则表达式简单解析
- 便捷函数
- spring-data-redis连接操作redis
- HDU 5792 World is Exploding (树状数组逆序对)
- (NYoj 10)skiing - 动态规划+记忆化搜索
- hdu5791
- cocos2dx中的观察者模式
- 表单标签
- 数据结构上机测试1:顺序表的应用