0

how is it possible with java, to count the number of PolylinePoint elements in this xml snippet (important for you is the fact, that this xml is not a file but a string):

    <LocationInformationRequest>
            <InitialInput>
                <GeoRestriction>
                    <Area>
                        <PolylinePoint>
                            <Longitude>88.1</Longitude>
                            <Latitude>88.2</Latitude>
                            <Altitude>88.3</Altitude>
                        </PolylinePoint>
                        <PolylinePoint>
                            <Longitude>88.4</Longitude>
                            <Latitude>88.5</Latitude>
                            <Altitude>88.6</Altitude>
                        </PolylinePoint>
                        <PolylinePoint>
                            <Longitude>88.7</Longitude>
                            <Latitude>88.8</Latitude>
                            <Altitude>88.9</Altitude>
                        </PolylinePoint>
                    </Area>
                </GeoRestriction>
            </InitialInput>
        </LocationInformationRequest>

With xml as a file it is easy to solve this problem. But with a string it is more difficult. Any ideas?

Thanks for helping !

CPerkins
  • 8,968
  • 3
  • 34
  • 47
  • 2
    What's the problem about doing it with a string? I think you can parse an XML string as well as a file with the common Java XML APIs. What have you tried so far and how are you currently doing this with a file? – André Stannek Jul 09 '13 at 13:54
  • You might find [this link to the official java tutorials about XML parsing](http://docs.oracle.com/javase/tutorial/jaxp/) helpful. – Alderath Jul 09 '13 at 13:56

3 Answers3

0
  • I guess you'd like to parse your string as XML ? Explained here: In Java, how do I parse XML as a String instead of a file?

  • Another solution but really ugly: if you are 100% sure of your XML structure (and sure that it won't change), you may as well count there number of "<PolylinePoint"

Community
  • 1
  • 1
TTT
  • 1,848
  • 2
  • 30
  • 60
0

You can use Regex:

        String str="<PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint><PolylinePoint><Longitude>88.7</Longitude><Latitude>88.8</Latitude><Altitude>88.9</Altitude></PolylinePoint>";
        Pattern p = Pattern.compile("<PolylinePoint>");
        Matcher m=p.matcher(str);
        int res=0;
        while (m.find()) {
            res++;
        }
        System.out.println(res++);
surfealokesea
  • 4,971
  • 4
  • 28
  • 38
0

How about creating Document drom String?

Document document = builder.parse( new InputSource( new StringReader( xmlString ) ) );

Then you can easilly use xPath.

Milos
  • 81
  • 1
  • 4