Java: удалить <и> из текста в XML (не теги) - PullRequest
2 голосов
/ 04 марта 2020

Мне трудно избежать xml для обработки Java. Я использую JTidy для экранирования нежелательных символов, но изо всех сил пытаюсь удалить "<" и ">" из таких значений, как <tag> capacity < 1000 </tag>

. Я использую приведенный ниже код для экранирования ввода

    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();
    }

Ответы [ 2 ]

1 голос
/ 05 марта 2020

используйте следующую функцию

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;        
}

Он использует поиск по регулярному выражению, чтобы получить значения между тегами, а затем удалить все не алфавитные символы c. Регулярные выражения и базовая c идея были получены из Java регулярных выражений для извлечения текста между тегами

0 голосов
/ 04 марта 2020

Если вы хотите удалить терминалы тегов XML, просто преобразуйте их в карту и создайте строку, как вам требуется, обратитесь к XML для отображения в Java.

Если вы хотите очистить значения атрибутов, вы можете выполнить итерацию карты и очистить ее, затем построить строку или преобразовать ее в карту XML на в XML в java

...