正则表达式与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

 XML

 XML 是标记语言

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

    7.标签的分类:
        单标签|自闭和标签
        双标签|闭合标签
-->

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


import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

public class Class02_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);
            }
        });
        //1.找到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;
        //构建输出格式
        OutputFormat format=OutputFormat.createPrettyPrint();
        writer=new XMLWriter(new FileWriter(path),format);
        //3.写出
        writer.write(document);
        //4.刷出
        writer.flush();
        //5.关闭
        writer.close();
    }
    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();
        //获取Document对象
        Document document=reader.read(new File(path));
        return document;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,我们可以使用正则表达式来处理XML文件,并进行替换操作。 首先,我们需要导入`re`模块,这是Python中用于操作正则表达式的标准模块。 接下来,我们需要读取XML文件并将其保存到一个字符串中,我们可以使用`open()`函数打开文件,然后使用`.read()`方法将文件内容保存到一个字符串中。 然后,我们可以使用正则表达式的`sub()`函数来进行替换操作。`sub()`函数接受三个参数:要替换的字符串模式、替换后的字符串和要进行替换操作的字符串。 例如,如果我们想要将XML文件中的所有`<name>`标签替换为`<username>`,可以使用以下代码: ```python import re # 读取XML文件并保存到字符串中 with open('example.xml', 'r') as file: xml_content = file.read() # 使用正则表达式替换操作 new_xml_content = re.sub(r'<name>', '<username>', xml_content) # 输出替换后的结果 print(new_xml_content) ``` 上述代码中,我们首先使用`open()`函数将名为`example.xml`的XML文件打开并读取其内容保存到`xml_content`字符串中。 然后,我们使用正则表达式的`sub()`函数,将`<name>`替换为`<username>`,替换操作应用于`xml_content`字符串,并将结果保存到`new_xml_content`中。 最后,我们使用`print()`函数输出替换后的结果。 以上就是使用Python的正则表达式XML进行替换的简单示例。当然,实际应用中可能会有更多复杂的替换操作,我们可以根据具体的需求来编写相应的正则表达式来完成相应的替换任务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值