首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java:从XML文本(非标记)中删除<和>

Java:从XML文本(非标记)中删除<和>
EN

Stack Overflow用户
提问于 2020-03-04 10:23:02
回答 2查看 189关注 0票数 2

我很难转义要由Java处理的xml。我使用JTidy来转义不需要的字符,但是很难从<tag> capacity < 1000 </tag>之类的值中删除"<“和">”

我使用下面的代码来转义输入

代码语言:javascript
复制
    public String CleanXML(String input){

        Tidy tidy = new Tidy();
        tidy.setInputEncoding("UTF-16");
        tidy.setOutputEncoding("UTF-16");
        tidy.setWraplen(Integer.MAX_VALUE);
        tidy.setXmlOut(true);
        tidy.setSmartIndent(true);
        tidy.setXmlTags(true);
        tidy.setMakeClean(true);
        tidy.setForceOutput(true);
        tidy.setQuiet(true);
        tidy.setShowWarnings(false);
        StringReader in = new StringReader(input);
        StringWriter out = new StringWriter();
        tidy.parse(in, out);

        return out.toString();
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-05 03:10:17

使用以下功能

代码语言:javascript
复制
private static final Pattern TAG_REGEX = Pattern.compile("<tag>(.+?)</tag>", Pattern.DOTALL);

public String CleanXML(String input){
    final Matcher matcher = TAG_REGEX.matcher(input);
    while (matcher.find()) {
        String value = matcher.group(1);
        String valueReplace = value.replaceAll("[^a-zA-Z0-9\\s]", "");
        input.replace(value,valueReplace);
    }
    return input;        
}

它使用正则表达式搜索得到标记之间的值,然后删除所有非字母数字字符。从Java regex to extract text between tags中得到正则表达式和基本思想

票数 1
EN

Stack Overflow用户

发布于 2020-03-04 10:44:10

如果要删除XML的标记终端,只需将其转换为映射并根据需要构建字符串,请参考XML to map in Java

如果要清除属性值,可以迭代映射并清理它,然后构建字符串或通过map to XML in java将其重新转换为XML。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60523850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档