0

以下のような文字列があります(ファイルから読み取って文字列に保存します)

<textmessages>
<textMessage timestamp="1424708212905">
<property name="tcs_car_kind" value="M32"/>
<property name="prev_cmdy_abrv" value="AUTOS"/>
<text><![CDATA[event_code="AP"]]></text>
</textMessage>
<textMessage timestamp="1424708212902">
<property name="shp_prim" value=""/>
<property name="prev_cmdy_abrv" value="AUTOS"/>
<text><![CDATA[event_code="CP"]]></text>
</textMessage>
<textMessage timestamp="1424708212902">
<property name="co_part_frm_nbr" value=""/>
<property name="prev_cmdy_abrv" value="AUTOS"/>
<text><![CDATA[event_code="LP"]]></text>
</textMessage>
</textmessages>

要件:

文字列値が 'event_code="CP"' に一致する場合、<textmessage> ---- </textmessage>以下に示すように間に完全なデータを返す必要があります。

<textMessage timestamp="1424708212902">
<property name="co_part_frm_nbr" value=""/>
<property name="shp_prim" value=""/>
<property name="prev_cmdy_abrv" value="AUTOS"/>
<text><![CDATA[event_code="CP"]]></text>
</textMessage>
4

2 に答える 2

0

それらの組み合わせが役立つかもしれませんhttp://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html http://docs.oracle.com/javase/7/docs/api /java/util/regex/Matcher.html

'event_code="CP" がある場合は、find() または match() で検索します...

Pattern p = Pattern.compile("pattern here"); if(p.matcher(content).find()){...}

他のオプションはxml解析を使用することですが、正規表現はあなたが望むものにとって本当に簡単です。

パターンが本当に一定である場合は、indexOf を使用して検索を高速化することもできます... http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(java .lang.文字列)

それらが同じ場所にある場合は、そこから読み取るだけで十分です..

于 2015-02-26T08:54:44.420 に答える