Hi,
it might be worth testing the XML reader in FME, in particular using feature paths (
http://fmepedia.safe.com/articles/How_To/Reading-XML).
You could also consider posting a single entry with dual dateFlown elements here, it would make it easier to give a specific answer.
David
Hi David,
Many thanks for your really quick response :-)
I've got this working now using the feature paths configuration type on the XML reader as suggested in the link that you posted.
However, if the GML file has a single dateFlown element then this is read fine by FME but my Data inspector shows that if there are two dateFlown elements the attribute is <missing>. Below are example XML documents containg single and double dateFlown elements.
Single:
<?xml version="1.0" encoding="utf-8" ?>
- <osgb:OrthoImageMetadata xsi:schemaLocation="
http://www.ordnancesurvey.co.uk/xml/namespaces/osgb OSOrthoMetadata.xsd" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xmlns:osgb="
http://www.ordnancesurvey.co.uk/xml/namespaces/osgb">
<osgb:copyright>Copyright GeoPerspectives 1999-2009</osgb:copyright>
<osgb:kmReference>SD8824</osgb:kmReference>
<osgb:dateFlown>2009-05-30</osgb:dateFlown>
- <osgb:kmRectangle>
- <osgb:Rectangle srsName="osgb:BNG">
<gml:coordinates xmlns:gml="
http://www.opengis.net/gml">388000,424000,389000,425000</gml:coordinates>
</osgb:Rectangle>
</osgb:kmRectangle>
<osgb:lensFocalLength uom="
http://www.ordnancesurvey.co.uk/xml/resource/units.xml#millimetres">100.5</osgb:lensFocalLength>
<osgb:nominalFlyingHeight uom="
http://www.ordnancesurvey.co.uk/xml/resource/units.xml#metres">1900</osgb:nominalFlyingHeight>
<osgb:nominalImageScale>1:18905</osgb:nominalImageScale>
<osgb:nominalAbsoluteAccuracy uom="
http://www.ordnancesurvey.co.uk/xml/resource/units.xml#metres">1</osgb:nominalAbsoluteAccuracy>
<osgb:resolution uom="
http://www.ordnancesurvey.co.uk/xml/resource/units.xml#metres">0.1</osgb:resolution>
<osgb:fileSize uom="
http://www.ordnancesurvey.co.uk/xml/resource/units.xml#MegaBytes">292.98</osgb:fileSize>
<osgb:control>Orthorectified</osgb:control>
<osgb:createdBy>GeoPerspectives</osgb:createdBy>
<osgb:correctionType>Orthorectified</osgb:correctionType>
<osgb:dateOfCompletion>2009-08-18</osgb:dateOfCompletion>
- <osgb:derivedFromAerialPhoto>
<osgb:filmId>n/a</osgb:filmId>
<osgb:frameNumber>n/a</osgb:frameNumber>
</osgb:derivedFromAerialPhoto>
</osgb:OrthoImageMetadata>
Double:
<?xml version="1.0" encoding="utf-8" ?>
- <osgb:OrthoImageMetadata xsi:schemaLocation="
http://www.ordnancesurvey.co.uk/xml/namespaces/osgb OSOrthoMetadata.xsd" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xmlns:osgb="
http://www.ordnancesurvey.co.uk/xml/namespaces/osgb">
<osgb:copyright>Copyright GeoPerspectives 1999-2009</osgb:copyright>
<osgb:kmReference>SD9132</osgb:kmReference>
<osgb:dateFlown>2009-05-30</osgb:dateFlown>
<osgb:dateFlown>2009-06-01</osgb:dateFlown>
- <osgb:kmRectangle>
- <osgb:Rectangle srsName="osgb:BNG">
<gml:coordinates xmlns:gml="
http://www.opengis.net/gml">391000,432000,392000,433000</gml:coordinates>
</osgb:Rectangle>
</osgb:kmRectangle>
<osgb:lensFocalLength uom="
http://www.ordnancesurvey.co.uk/xml/resource/units.xml#millimetres">100.5</osgb:lensFocalLength>
<osgb:nominalFlyingHeight uom="
http://www.ordnancesurvey.co.uk/xml/resource/units.xml#metres">1900</osgb:nominalFlyingHeight>
<osgb:nominalImageScale>1:18905</osgb:nominalImageScale>
<osgb:nominalAbsoluteAccuracy uom="
http://www.ordnancesurvey.co.uk/xml/resource/units.xml#metres">1</osgb:nominalAbsoluteAccuracy>
<osgb:resolution uom="
http://www.ordnancesurvey.co.uk/xml/resource/units.xml#metres">0.1</osgb:resolution>
<osgb:fileSize uom="
http://www.ordnancesurvey.co.uk/xml/resource/units.xml#MegaBytes">292.98</osgb:fileSize>
<osgb:control>Orthorectified</osgb:control>
<osgb:createdBy>GeoPerspectives</osgb:createdBy>
<osgb:correctionType>Orthorectified</osgb:correctionType>
<osgb:dateOfCompletion>2009-08-18</osgb:dateOfCompletion>
- <osgb:derivedFromAerialPhoto>
<osgb:filmId>n/a</osgb:filmId>
<osgb:frameNumber>n/a</osgb:frameNumber>
</osgb:derivedFromAerialPhoto>
</osgb:OrthoImageMetadata>
Can you offer any further pointers?
Thanks,
Matt
Hi Matt,
Multiple child elements will be read as elements of a list attribute. After selecting row of the feature in the Table View of Data Inspector, have a look at Feature Information window.
Takashi
Hi Takashi,
Thank you for your answer. I too can see those elements as list attributes in the data inspector.
If you select the row of a feature that only has a single dateFlown element in the Table View, then in the Feature Information window only an attribute named dateFlown i.e. not followed by a {0}.
Therefore, my next questions are:
1. Which transformer do I need to get the dateFlown{0} (or dateFlown{1}) element of a list attribute so I can set the value to an attribute? I've tried the ListRangeExtractor but it does not recognise any of my input attributes as lists.
2. Can I get FME to recognise whether there's just a single dateFlown attribute of whether dateFlown{0} and dateFlown{1} elements exist? In the first case I'd just output the dateFlown and in the 2nd case I'd want dateFlown{0}.
Thanks again,
Matt
Hi Takashi,
Many, many thanks for your detailed reply. I've got it sorted now. I doubt very much whether I would have found the cardinality settings without your help.
Thanks again,
Matt