-1

次のような構造体を持つ XML ファイルを用意します。

<codes>
    <condition>
        <code>395</code>
        <description>Moderate or heavy snow in area with thunder</description>
        <day_icon>wsymbol_0012_heavy_snow_showers</day_icon>
        <night_icon>wsymbol_0028_heavy_snow_showers_night</night_icon>
    </condition>
    <condition>
        <code>392</code>
        <description>Patchy light snow in area with thunder</description>
        <day_icon>wsymbol_0016_thundery_showers</day_icon>
        <night_icon>wsymbol_0032_thundery_showers_night</night_icon>
    </condition>
</codes>

関数の書き方、それはコードだけで記述を応答します

func(395) return @雷のある地域で中程度または大雪@

4

2 に答える 2

0

これを行う簡単な方法は、正規表現を使用して値を抽出することです。高速で効率的です (すべてをメモリ (dom) に解析する理由)。

public static String extractDescription(String code, String xmlData){
        //search for the entire condition element based on the id
        Pattern elementPattern=Pattern.compile("<condition><code>"+code+"</code><description>(.*?)</description>.*</condition>");

        Matcher elementMatcher=elementPattern.matcher(xmlData);

        if(elementMatcher.groupCount()>0){//if we have some groups to match in our pattern
            if(elementMatcher.find()){//find the matches
                return elementMatcher.group(1);
            }
            else{//no match found
                return null;
            }
        }
        else{//our pattern is useless and does not contain any groups to match
            return null;
        }
    }

ここでの唯一の重い操作は Pattern.compile(..) ですが、それでもかなり高速です。

于 2013-03-28T15:58:44.613 に答える
0

次の XPath を使用できます。

/codes/condition[code='395']/description/text()

Java で XPath を使用する例を次に示します: http://www.ibm.com/developerworks/library/x-javaxpathapi/index.html

于 2013-03-29T04:16:39.333 に答える