Hi Michael,

I took a look at this and was able to successfully stream parse the
feature collection. Here is the code:


GMLConfiguration configuration = new GMLConfiguration();
configuration.getProperties().add(Parser.Properties.PARSE_UNKNOWN_ELEMENTS);

InputStream xml = new URL("http://pisa007.....";).openStream();

StreamingParser parser = new StreamingParser(configuration, xml,
"//featureMember");

Feature f = null;
while( ( f = (Feature) parser.parse()  ) != null ) {
  //do something with feature
}

This relies on a recent fix to the parser, so make sure you are working
with recent snapshots of both gt2-xml-xsd and gt2-xml-gml2. The easiest
way to ensure you have a recent snapshot would be to depend on with via
a maven project, not sure if you can do that though.

I apologize for initially misdiagnosing your problem. You actually don't
want to use the property IGNORE_SCHEMA_LOCATION in this case since the
document correctly specifies the definition of the application schemas.

Please let me know if you have any more problems.

-Justin


Michael Lutz wrote:
> Hi Justin, Andrea,
> 
> here's my code. The WFS (GeoServer) request included should work as an 
> example.
> 
> 
> public static void main(String[] args) {
>    try {
>      InputStream in = new 
> URL("http://pisa007.pisa.intecs.it/geoserver/wfs?request=GetFeature&service=WFS&version=1.0.0&typeName=topp:Portugal_Creation_20Points";)
>                                               .openStream();
>      Configuration configuration  = new WFSConfiguration();           
>      configuration.getProperties().add( 
> Parser.Properties.IGNORE_SCHEMA_LOCATION );
>      configuration.getProperties().add( 
> Parser.Properties.PARSE_UNKNOWN_ELEMENTS );
>      Parser parser = new Parser(configuration);
>      Map map = (Map) parser.parse(in);
>      List members = (List) map.get( "featureMember" );
>      for ( Iterator i = members.iterator(); i.hasNext(); ) {
>        Map f = (Map) i.next();
>        Point point = (Point) f.get( "pointProperty" );
>      }
>      in.close();
>    } catch (Throwable t) {
>      t.printStackTrace();
> }
> 
> 
> I also tried with a streaming parser:
> 
>      (...)
>      String xpath = "//Point";
>      StreamingParser parser = new StreamingParser( configuration, in, 
> xpath );
>      Point f = null;
>      while(  (f = (Point) parser.parse()) != null ) {
>       // do something
>      }
>      (...)
> 
> but with the same effect:
> 
> Exception in thread "Thread-0" java.lang.RuntimeException: 
> java.lang.RuntimeException: Parsing failed for 
> Portugal_Creation_20Points: 
> org.geotools.feature.IllegalAttributeException: No attribute named the_geom
>       at org.geotools.xml.StreamingParser$1.run(StreamingParser.java:227)
>       at java.lang.Thread.run(Unknown Source)
> Caused by: java.lang.RuntimeException: Parsing failed for 
> Portugal_Creation_20Points: 
> org.geotools.feature.IllegalAttributeException: No attribute named the_geom
>       at org.geotools.xml.impl.ParseExecutor.visit(ParseExecutor.java:96)
>       at 
> org.geotools.xml.impl.BindingWalker$BindingExecutionChain.execute(BindingWalker.java:204)
>       at org.geotools.xml.impl.BindingWalker.walk(BindingWalker.java:163)
>       at 
> org.geotools.xml.impl.ElementHandlerImpl.endElement(ElementHandlerImpl.java:191)
>       at 
> org.geotools.xml.impl.ParserHandler.endElement(ParserHandler.java:399)
>       at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown 
> Source)
>       at 
> org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown 
> Source)
>       at 
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
>  
> Source)
>       at 
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown 
> Source)
>       at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
>       at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
>       at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
>       at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
>       at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown 
> Source)
>       at javax.xml.parsers.SAXParser.parse(Unknown Source)
>       at javax.xml.parsers.SAXParser.parse(Unknown Source)
>       at org.geotools.xml.StreamingParser$1.run(StreamingParser.java:223)
>       ... 1 more
> Caused by: org.geotools.feature.IllegalAttributeException: No attribute 
> named the_geom
>       at 
> org.geotools.feature.DefaultFeature.setAttribute(DefaultFeature.java:283)
>       at 
> org.geotools.gml2.bindings.GMLAbstractFeatureTypeBinding.parse(GMLAbstractFeatureTypeBinding.java:236)
>       at org.geotools.xml.impl.ParseExecutor.visit(ParseExecutor.java:84)
>       ... 17 more
> 
> 
> Also the same for the GMLConfiguration.
> 
> Hope this helps. Thanks again for your help.
> Michael
> 
> 
> 
> Justin Deoliveira wrote:
>>> Michal, I think we would be able to solve this faster if you could
>>> give us a small GML document and a main with the code you're using
>>> to parse it. Add a bit of patience too, since Justin lives in Canada, west 
>>> coast,
>>> so he's quite out of synch with our timezone.
>> Well I believe it is a bit more complicated then just a simple gml file.
>> Michael is trying to parse features from a wfs. But by all means send me
>> some sample xml and the code you are using to parse and I would be happy
>> to debug what is going on and help you worth through this issue.
>>
>>> Cheers
>>> Andrea
>>>
>>> -------------------------------------------------------------------------
>>> Take Surveys. Earn Cash. Influence the Future of IT
>>> Join SourceForge.net's Techsay panel and you'll get the chance to share your
>>> opinions on IT & business topics through brief surveys-and earn cash
>>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>> _______________________________________________
>>> Geotools-devel mailing list
>>> Geotools-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/geotools-devel
>>>
>>>
>>>
>>
> 
> 
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys-and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Geotools-devel mailing list
> Geotools-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/geotools-devel
> 
> !DSPAM:1004,45df1e41215174750375898!
> 


-- 
Justin Deoliveira
The Open Planning Project
http://topp.openplans.org

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Geotools-devel mailing list
Geotools-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to