0

私はこのようないくつかのxmlを受け取っています:

<cite id="0ac50429-bfbd-74e5-81bf-be29583cba3b">
<cite id="0ac50429-bfbd-74e5-81bf-be2a36aec2df">
<cite id="0ac50429-bfbd-74e5-81bf-be3d125bdc1c">Some Text
</cite>
</cite>
</cite>
<p>random text</p>
<cite id="0ac50429-bfbd-74e5-81bf-be29583cba3b">
<cite id="0ac50429-bfbd-74e5-81bf-be2a36aec2df">
<cite id="0ac50429-bfbd-74e5-81bf-be3d125bdc1c">
More text
</cite>
</cite>
</cite>

ご覧のとおり、同じ値に対して複数のタグがあり、テキストごとに 1 つのタグだけが必要です。

<cite id="0ac50429-bfbd-74e5-81bf-be3d125bdc1c">Some Text</cite>
<p>random text</p>
<cite id="0ac50429-bfbd-74e5-81bf-be29583cba3b">More text</cite>

しかし、これを取り除く良い方法が見つかりません。誰にも手がかりがありますか?最後の子供を手に入れようとしましたが、手に入れることができません。正規表現を試してみましたが、最後のノードを取得できますが、欲望のxmlを取得するためにそれらを正しく置き換えることができません。タイ!

これが私の解決策です(私は自分の質問に答えることができないので、代わりにここに書きます:)

私はそれが最善ではなく、もっとうまくできることを知っています。

private static String replaceNodes(String simpleRegex, String xml)
{

    String tagMultiple;
    String expresionRegular = "("+simpleRegex+")+";

    Pattern pattern = Pattern.compile(expresionRegular);
    Matcher matcher = pattern.matcher(xml);


    while(matcher.find())  // Here we look for all the nodes that are repeated . EJ  <cite id="asda"><cite id="asda"><cite id="asda">
    {
         Pattern patternSimple = Pattern.compile(simpleRegex);
        Matcher matcherSimple = patternSimple.matcher(xml);
        String tagUnicoEnd ="";
        if (matcherSimple.find()) //Here we get only one node. <cite id="asda">
            tagUnicoEnd = matcher.group(1);         

        tagMultiple = matcher.group();                  
        xml =xml.replace(tagMultiple,tagUnicoEnd);  //we replace all the repetead nodes, with the unique one.
    }       

    return xml;                         
}
4

1 に答える 1

0

最後に方法を見つけました。それが最善ではなく、もっとうまくできることはわかっています。

private static String replaceNodes(String simpleRegex, String xml)
{

    String tagMultiple;
    String expresionRegular = "("+simpleRegex+")+";

    Pattern pattern = Pattern.compile(expresionRegular);
    Matcher matcher = pattern.matcher(xml);


    while(matcher.find())  // Here we look for all the nodes that are repeated . EJ  <cite id="asda"><cite id="asda"><cite id="asda">
    {
         Pattern patternSimple = Pattern.compile(simpleRegex);
        Matcher matcherSimple = patternSimple.matcher(xml);
        String tagUnicoEnd ="";
        if (matcherSimple.find()) //Here we get only one node. <cite id="asda">
            tagUnicoEnd = matcher.group(1);         

        tagMultiple = matcher.group();                  
        xml =xml.replace(tagMultiple,tagUnicoEnd);  //we replace all the repetead nodes, with the unique one.
    }       

    return xml;                         
}
于 2013-06-14T13:07:38.657 に答える