如果xml源有多个命名空间,比如:
<kml xmlns:ns3="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0" xmlns:ns2="http://www.w3.org/2005/Atom" xmlns="http://www.opengis.net/kml/2.2"> <Document> <description>Available CAR2GO Vehicles</description> <Style id="car2go"> <IconStyle> <Icon> <href>http://www.car2go.com/default/img/backgrounds/Marker_car2go.png </href> </Icon> <hotSpot y="0.0" x="0.0" /> </IconStyle> </Style> <Placemark> <name>UL-C5887</name> <description>Sudetenweg, 89075 Ulm<br/>Fuel 24<br/>Interior EXCELLENT<br/>Exterior EXCELLENT </description> <styleUrl>#car2go</styleUrl> <ExtendedData> <Data name="fuel"> <value>24</value> </Data> <Data name="interior"> <value>EXCELLENT</value> </Data> <Data name="exterior"> <value>EXCELLENT</value> </Data> <Data name="vin"> <value>WME4513001K154655</value> </Data> </ExtendedData> <Point> <coordinates>10.029,48.4362,0</coordinates> </Point> </Placemark> </Document> </kml>
在使用xmllistmodel加载时,需要这样声明:
namespaceDeclarations: "declare namespace ns2='http://www.w3.org/2005/Atom'; declare default element namespace 'http://www.opengis.net/kml/2.2';"
否则系统会报错Error XPST0003 in file ... syntax error, unexpected NCName, expecting ; QML XmlRole: invalid query: "name/string()" etc.
另外:
对于默认的命名空间xmlns,做如下声明:
declare default element namespace 'http://www.w3.org/2005/Atom';
对于其他的命名空间,做如下声明:
declare namespace gd='http://schemas.google.com/g/2005';declare namespace georss='http://www.georss.org/georss';
注意 :每个声明后面一定要加上分号。