`

正则表达式替换非法格式xml

阅读更多
非法xml的格式,标签中有数字:
<?xml version="1.0" encoding="UTF-8"?>
<book>
	<1 type="abc">
		<price></price>
	</1>
	<2 type="abc">
		<price></price>
	</2>
	<3 type="abc">
		<price></price>
	</3>
</book>


考虑用正则表达式替换,给每个数字加上一个后缀

@RequestMapping("/importXML")
    public ModelAndView importXML(HttpServletRequest request, HttpServletResponse response)
    {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
        
        // 获取服务器上下文路径
        String path = request.getSession().getServletContext().getRealPath("/file");
        
        // 创建文件存放路径
        File folder = new File(path);
        if (!folder.exists())
        {
            folder.mkdirs();
        }
        
        // 获取上传的文件
        MultipartFile multiFile = multipartRequest.getFile("file");
        String fname = multiFile.getOriginalFilename();
        String suffix = fname.substring(fname.lastIndexOf("."));
        String fileName = path + "/" + UUID.randomUUID().toString() + suffix;
        
        File file = new File(fileName);
        
        try
        {
            // 写文件到服务器
            multiFile.transferTo(file);
        }
        catch (IllegalStateException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        
        try
        {
            String temp = null;
            StringBuffer sb = new StringBuffer();
            FileInputStream fileIn = new FileInputStream(file);
            InputStreamReader bufferInputStr = new InputStreamReader(fileIn);
            BufferedReader bufferedReader = new BufferedReader(bufferInputStr);
            while ((temp = bufferedReader.readLine()) != null)
            {
                
                sb.append(temp);
            }
            
            String tempStr = sb.toString();
            
            //正则表达式过滤后的字符串
            String firstTempStr = "";
            
            //替换所有数字开始的标签
            firstTempStr = tempStr.replaceAll("\\<(?=\\d)", "<" + Global.TEMP);
            firstTempStr = firstTempStr.replaceAll("\\</(?=\\d)", "</" + Global.TEMP);
            
            Document doc = DocumentHelper.parseText(firstTempStr);
            int i = importService.importXML(doc.getRootElement().element("InternetGatewayDevice"));
            if(1 == i){
                request.setAttribute("msg", "文件导入成功。");
            }else{
                request.setAttribute("msg", "文件导入失败。");
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return new ModelAndView("config/import_xml");
    }
分享到:
评论

相关推荐

    正则表达式精品资料

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和提取字符串模式。在Java、Web开发等领域,正则表达式是不可或缺的一部分。本文将深入探讨正则表达式的概念、语法、应用以及如何在Java中使用它们。 一...

    C#替换敏感字符(包含方法和字符txt)

    4. **正则表达式**:对于一些特定格式的敏感词,如连续的数字或特殊符号,可以使用正则表达式进行匹配。 5. **性能优化**:敏感词库可能非常大,为了提高效率,可以使用Trie树或Aho-Corasick算法等高效数据结构。 ...

    Android relaceALL替换字符串中的反斜杠

    - `regex`:这是一个正则表达式,表示要查找和替换的模式。 - `replacement`:当找到匹配`regex`的模式时,将被用来替换的字符串。 ### 2. 反斜杠 `\` 的特殊意义 在Java和正则表达式中,反斜杠`\`是一个特殊的...

    基于jsp的非法关键字过滤功能

    这涉及到字符串的查找、替换和判断等操作,例如使用`indexOf()`或`contains()`方法检查关键字是否存在,使用`replace()`或`replaceAll()`方法替换非法字符。 3. **关键字列表**:为了实现过滤功能,我们需要定义一...

    简单扼要了解python爬虫

    3. 正则表达式:正则表达式是描述字符串模式的工具,用于匹配、查找、替换和分割文本。Python中的re模块提供了正则表达式的支持。 应用场景: 1. 学术研究:研究人员可以爬取网络文献、数据、新闻等,进行数据分析...

    matlab 从新浪股票获取信息的 代码

    首先,`parseXML.m`文件很可能是用于解析从新浪股票API获取的XML格式的数据。在MATLAB中,可以使用`xmlread`或`xml2struct`函数来解析XML文件或字符串。`xmlread`函数直接读取XML文件并返回一个XML DOM对象,而`xml2...

    C#基类库大全

    13. **正则表达式**:System.Text.RegularExpressions命名空间的Regex类,用于字符串匹配、替换和分割,实现复杂的文本处理。 这些类库大大简化了C#开发者的任务,提高了开发效率。掌握并灵活运用这些知识点,能够...

    PHP手机小说小偷.7z

    3. **正则表达式**:在处理网页内容时,正则表达式是常用的工具,用于匹配和提取特定模式的数据。PHP提供preg_match_all或preg_replace等函数,用于执行正则匹配和替换操作,帮助从HTML文本中定位并提取小说的链接和...

    c#中XML解析文件出错解决方法

    这段代码的含义是使用正则表达式匹配ASCII码值在0到8、11到12、14到31之间的所有字符,并将它们替换为空字符串。这样处理后,文件中就不会再含有那些导致解析错误的特殊字符。 此外,还有一种方法是使用HttpUtility...

    filterdemo代码

    常见的方法是替换或删除这些字符,或者使用正则表达式进行匹配和过滤。这样可以确保输入数据的安全性,防止恶意脚本被执行。 4. **传递请求**:过滤完成后,过滤器需要调用`chain.doFilter(request, response)`,将...

    用java编写的打字练习,绝对可用后端- Java

    - **正则表达式**:可能用到正则表达式来验证用户输入是否符合特定格式,例如检查是否有非法字符。 ### 4. 时间管理 - **java.time** 包:Java 8引入了新的日期和时间API,可以方便地实现倒计时功能。 ### 5. ...

    URL过滤.doc

    通常情况下,过滤逻辑可以是简单的字符串匹配,也可以是复杂的正则表达式匹配。通过这种方式,可以实现对特定URL路径的拦截、重定向或动态映射等功能。 ##### 2.2 应用场景 - **网站安全**:阻止恶意用户访问不安全...

    PHP中将数组转成XML格式的实现代码

    由于XML的节点名称需要是合法的标签名称,因此代码中使用了正则表达式移除了键名中的非法字符。此外,为了避免在XML文档中出现以数字开头的节点名称,对于数字键值的节点名称进行了特别处理,将其修改成不以数字开头...

    使用filter对字符进行过滤

    - 使用`getParameter()`或`getParameterValues()`获取参数后,可以对每个参数值执行自定义的过滤逻辑,例如使用正则表达式检查非法字符,或者替换敏感信息。 - 过滤后的参数可以使用`request.setAttribute()`方法...

    UItraEdit-32

    同时,它拥有强大的查找和替换功能,支持正则表达式,能帮助用户快速定位和修改文本。 UItraEdit-32的注册码是软件激活的关键,每个注册码都是独一无二的,用于验证用户对软件的合法使用权。在初次安装后,用户需要...

    validator框架

    - **Jakarta ORO**:用于处理正则表达式,提供文本替换和分割功能。 - **Commons BeansUtils**:提供方便的Bean操作工具。 - **Commons Logging**:统一的日志接口。 - **Commons Collections**:提供额外的集合实现...

    Python处理文本文件中控制字符的方法

    这种方法首先创建了一个包含所有控制字符的字符串,然后使用正则表达式来匹配这些字符并将其替换为空字符串。最后,通过`simplejson.loads()`将清理后的JSON字符串转换为Python对象。 #### 总结 处理文本文件中的...

    Notepad++ 可以用

    5. **查找和替换**:强大的搜索功能,支持正则表达式,可以实现复杂的文本查找和替换操作。 6. **编码转换**:支持各种字符编码,如UTF-8、ASCII、GBK等,方便处理不同编码格式的文件。 7. **自定义主题和字体**:...

Global site tag (gtag.js) - Google Analytics