Как удалить тег XML, который просто содержит число, используя Groovy

У меня есть следующий пример XML:

<?xml version="1.0" encoding="UTF-8" ?>
<0>
    <user>
        <fname>bob</fname>
        <lname>marley</lname>
        <age>30</age>
    </user>
</0>
<1>
    <user>
        <fname>john</fname>
        <lname>lennon</lname>
        <age>20</age>
    </user>
</1>
<2>
    <user>
        <fname>phil</fname>
        <lname>smith</lname>
        <age>40</age>
    </user>
</2>

Я хотел бы в конечном итоге только пользователи .... как так ...

    <user>
        <fname>bob</fname>
        <lname>marley</lname>
        <age>30</age?
    </user>
    <user>
        <fname>john</fname>
        <lname>lennon</lname>
        <age>20</age>
    </user>
    <user>
        <fname>phil</fname>
        <lname>smith</lname>
        <age>40</age>
    </user>

Я уже использовал регулярное выражение, чтобы избавиться от строки объявления XML ... но теперь мне нужно удалить целочисленные теги и получить только теги USER

Это то, что я до сих пор. Я запутался в части регулярного выражения .. (Я думаю!)

String x1 = '''
<?xml version="1.0" encoding="UTF-8" ?>
<0>
    <user>
        <fname>bob</fname>
        <lname>marley</lname>
        <age>30</age>
    </user>
</0>
<1>
    <user>
        <fname>john</fname>
        <lname>lennon</lname>
        <age>20</age>
    </user>
</1>
<2>
    <user>
        <fname>phil</fname>
        <lname>smith</lname>
        <age>40</age>
    </user>
</2>
'''

import java.util.regex.Pattern

//remove the XML declaration
String x2 = x1.replaceAll("\<\?xml(.+?)\?\>", "").trim();

//grab the opening XML tag --- not quite sure how to insert dynamic REGEX here
String openingNumberTag = "<" + "[0-9]+" + ">";

//grab the closing XML tag --- not quite sure how to insert dynamic REGEX here
String closingNumberTag = "</" + "[0-9]+" + ">";

//Now iterate through the XML string and remove the number tags
if (x2.matches(openingNumberTag))
{
    //remove it somehow;                     
}
if (x2.matches(closingNumberTag))
{
    //remove it somehow;                     
}

//Print the final XML string with just the USER tags
println(x2);

Любая помощь приветствуется Спасибо

Всего 1 ответ


Я решил это таким образом ...

String x1 = '''
<?xml version="1.0" encoding="UTF-8" ?>
<0>
    <user>
        <fname>bob</fname>
        <lname>marley</lname>
        <age>30</age>
    </user>
</0>
<1>
    <user>
        <fname>john</fname>
        <lname>lennon</lname>
        <age>20</age>
    </user>
</1>
<2>
    <user>
        <fname>phil</fname>
        <lname>smith</lname>
        <age>40</age>
    </user>
</2>
'''

import java.util.regex.Pattern

//remove the XML declaration
String x2 = x1.replaceAll("\<\?xml(.+?)\?\>", "").trim();
String x3 = x2.replaceAll("<[0-9]+>", "").trim();
String x4 = x3.replaceAll("</[0-9]+>", "").trim();


println(x4);

Есть идеи?

10000