java正则与XML

正则表达式: 了解

具有标记语言的语法格式
严谨

用正则的语法来描述具有特殊规则字符串
是一个门语言,具有自己的语法
作用:

        查找,匹配,校验,分隔...

目标:

        简单的可以手写,复杂的能看懂,稍作修改

java中使用正则

1.String类中一些支持正则表达式语法的方法
     String[] split(String regex) 将此字符串拆分为给定 regular expression的匹配 项 。
     String replaceAll(String regex, String replacement) 将给定替换的给定 regular expression匹配的此字符串的每个子字符串替换。
     String replaceFirst(String regex, String replacement) 将给定替换的给定 regular expression匹配的此字符串的第一个子字符串替换。
     boolean matches(String regex) 判断此字符串是否与给定的 regular expression匹配。
2.模式器 Pattern
    匹配器 Matcher    

代码:

    public class Class002_Regex {
public static void main(String[] args) {
    String reg=".{3}(a{1,2}\\d{2})(hello|hi)";
    String str="asdaa12hellodsaa34hi";
    //1. String类中一些支持正则表达式语法的方法
    System.out.println(Arrays.toString(str.split("\\.")));
    System.out.println(str.replaceAll("\\.","*"));
    //boolean matches(String regex) 判断此字符串是否与给定的 regular expression匹配。--->完整匹配
    if (str.matches("\\d{3}")){
        System.out.println("匹配");
    }
    //2.模式器 Pattern
   Pattern pattern= Pattern.compile(reg);
    Matcher matcher=pattern.matcher(str);
    //find() 判断是否存在满足条件的子串
    while (matcher.find()){
        //group() 获取当前查找到的子串
        System.out.println("查找到的子串"+matcher.group()+"--->"+matcher.group());
        //group(index) 获取当前子串中第几组缓存的内容
        System.out.println("分组缓存内容: "+matcher.group(1)+"--->"+matcher.group(2));
    }

}
}

XML:标记语言

标记语言的注释

 1.xml是一个标记语言  <英文单词>
 2.xml文件中标签可以根据需求自定义
 3.xml文件的首行必须存在版本声明
 4.xml文件中有且仅有一个跟标签|根元素 Persons,所有的子内容都定义在根元素中
 5.xml的作用: 传输,存储,配置,解析...
 6.属性: 开始标签上定义属性
     属性可以帮助更完整|完善的展示标签的作用
 7.标签的分类:
     单标签|自闭和标签
     双标签|闭合标签

xml文件 : 识别xml语言格式
xml文件的作用:

传输,存储,配置,解析...

xml的解析

语法定义:

可以自定义标签
根据约束规范标签的定义语法   
DOM
SAX
DOM4J

DOM4J解析:

1.查询,遍历
     1)创建流,加载xml文件
     2)获取Document对象
     3)遍历
 2.写出
 3.创建
 4.删除或者修改

代码:

public class Class002_XML {
public static void main(String[] args) throws DocumentException, IOException {
    writeToFile(update(getDocument("src/yjxxt.xml")),"src/yjxxt.xml");

}

//修改与删除
public static Document update(Document document){
    //1.找到id属性值为2的元素,删除子标签tuition
    Element root = document.getRootElement();
    List<Element> list = root.elements();
    list.forEach(e->{
        String idValue = e.attributeValue("id");
        if(idValue.equals("2")){
            //父节点.remove(子节点)
            Element removeElement = e.element("tuition");
            e.remove(removeElement);
        }
    });

    //2.找到shyjxxt,学费涨价1w
    Element shyjxxt = root.element("shyjxxt");
    Element tuition = shyjxxt.element("tuition");
    tuition.setData(Integer.parseInt(tuition.getText())+10000);
    return document;
}


//写出
public static void writeToFile(Document document,String path) throws IOException {
    //1.  构建XMLWriter
    XMLWriter writer = null;
    //2.构建输出格式
    OutputFormat format = OutputFormat.createPrettyPrint();
    writer = new XMLWriter(new FileWriter(path),format);
    //3.写出
    writer.write(document);
    //4.刷出
    writer.flush();
    //5.关闭
    writer.close();
}

/*
    创建Document

    <yjxxt>
        <shyjxxt>
            <location>上海市浦东新区</location>
            <date>2021-10-10</date>
        </shyjxxt>
        <bjyjxxt>
            <location>北京市朝阳区</location>
            <date>2022-12-12</date>
        </bjyjxxt>
    </yjxxt>
 */
public static Document createDocument(){
    //1.创建Document
    Document document = DocumentHelper.createDocument();
    //2.添加根元素
    Element root = document.addElement("yjxxt");
    //3.根元素中添加子元素
    Element shyjxxt = root.addElement("shyjxxt");
    Element bjyjxxt = root.addElement("bjyjxxt");

    shyjxxt.addElement("location").addText("上海市浦东新区");
    shyjxxt.addElement("date").addText("2021-10-10");
    bjyjxxt.addElement("location").addText("北京市朝阳区");
    bjyjxxt.addElement("date").addText("2022-12-12");

    return document;
}

//遍历
public static void print(Document document){
    // 3)遍历
    //获取根节点
    Element root = document.getRootElement();
    System.out.println("根元素标签名"+root.getName());
    //获取子元素
    List<Element> list =  root.elements();
    //遍历子元素
    list.forEach(e->{
        System.out.println("标签名 : "+e.getName() + "-->id属性 = "+e.attributeValue("id"));
        //迭代所有子元素的迭代器
        Iterator<Element> it =  e.elementIterator();
        while(it.hasNext()){
            Element ele = it.next();
            System.out.println(ele.getName()+"---->"+ele.getData());
        }
    });
}

//加载xml文件 , 获取Docuemnt
public static Document getDocument(String path) throws DocumentException {
    //1)创建流,加载xml文件
    SAXReader reader = new SAXReader();
    // 2)获取Document对象
    Document document = reader.read(new File(path));
    return document;
}
}

xml约束–> 了解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值