0

次のようなファイルからテキストを読みたい:

Look up for : Bergwald Elsa-Brändström-Str
 http://www.overpass-api.de/

output:

<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="Overpass API">
<note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note>
<meta osm_base="2015-07-08T07:36:02Z"/>

<node id="2505961536" lat="48.9722935" lon="8.4618593">
    <tag k="bus" v="yes"/>
    <tag k="highway" v="bus_stop"/>
    <tag k="name" v="Elsa-Brändström-Straße"/>
    <tag k="network" v="Karlsruher Verkehrsverbund (KVV)"/>
    <tag k="operator" v="Verkehrsbetriebe Karlsruhe"/>
    <tag k="public_transport" v="stop_position"/>
  </node>
</osm> 

Look up for : Bergwald Hooverstraße
 http://www.overpass-api.de/

output:

<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="Overpass API">
<note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note>
<meta osm_base="2015-07-08T07:36:02Z"/> 

<node id="2505961539" lat="48.9741500" lon="8.4640651">
    <tag k="bus" v="yes"/>
    <tag k="highway" v="bus_stop"/>
    <tag k="name" v="Hooverstraße"/>
    <tag k="network" v="Karlsruher Verkehrsverbund (KVV)"/>
    <tag k="operator" v="Verkehrsbetriebe Karlsruhe"/>
    <tag k="public_transport" v="stop_position"/>
  </node>
</osm>

まず、 Look up for : の後に続く文字列を抽出する必要があります。次に、タグosm version=で始まりタグosmで終わる、最初に抽出された文字列に属する部分を抽出する必要があります。この部分を xml パーサーで解析したいと思います。

Look up for : の後に抽出された各文字列値をそれに属する出力に一致させることができる解決策が見つかりませんでした。

誰にもアイデアはありますか?

敬具、ナザール

4

2 に答える 2

0

これは、単にファイルを読み込んで (方法はこちら)、「Look up for :」で文字列全体を分割するだけでは解決できません。次に、「Look up for *$」を探すことができます。「Look up for :」を見つけて、この末尾から行の末尾までの部分文字列を取得するだけであれば、正規表現なしで実行することもできます。

「出力」についても同じことを行います。これを分割すると、xml がすべて単独で作成されます (String.split を使用するか、部分文字列のみを使用します)。次に、それを解析します。

于 2015-07-13T08:01:22.623 に答える
0

私はちょうど実用的な解決策を見つけました。ここにあります...

FileInputStream fs= new FileInputStream("C:/Users/kca/Desktop/testFile.txt");
    BufferedReader br = new BufferedReader(new InputStreamReader(fs));

    String haltestellenName = "";

    try {
        StringBuilder sb = new StringBuilder();

        String line = br.readLine();

        while (line != null) {

            StringBuilder response = new StringBuilder();

            line = br.readLine();
            sb.append(line);

            if(line.contains("Look up for :")) {

                haltestellenName = line;
                haltestellenName = line.split(":")[1];

            }

            if(line.contains("<osm version=")) {
                response.append(line);                
                while(!(line.contains("</osm>"))) {

                    line = br.readLine();
                    response = response.append(line);
                    response = response.append("\n");

                }

            }

            if(line.contains("</osm>")) {

                System.out.println("Look up for " + haltestellenName);
                System.out.println("with the matching output " + response); 
                System.out.println("\n");
            }



            sb.append(System.lineSeparator());
            //System.out.println(line);
        }
     String everything = sb.toString();  

    } finally {
        br.close();
    }
于 2015-07-13T08:23:30.583 に答える