使用XSLT将XML转换为GeoJSON

问题描述 投票:0回答:1

我想使用XSLT将一些XML转换为JSON。XML如下所示:

<?xml version="1.0" ?>
<CoronaInfections>
    <Countries>
        <item>
            <Country>Afghanistan</Country>
            <CountryCode>AF</CountryCode>
            <Slug>afghanistan</Slug>
            <NewConfirmed>542</NewConfirmed>
            <TotalConfirmed>21459</TotalConfirmed>
            <NewDeaths>15</NewDeaths>
            <TotalDeaths>384</TotalDeaths>
            <NewRecovered>480</NewRecovered>
            <TotalRecovered>2651</TotalRecovered>
            <Date>2020-06-10T10:06:56Z</Date>
            <Lat>33.0000</Lat>
            <Lng>65.0000</Lng>
        </item>
        <item>
            <Country>Albania</Country>
            <CountryCode>AL</CountryCode>
            <Slug>albania</Slug>
            <NewConfirmed>36</NewConfirmed>
            <TotalConfirmed>1299</TotalConfirmed>
            <NewDeaths>0</NewDeaths>
            <TotalDeaths>34</TotalDeaths>
            <NewRecovered>15</NewRecovered>
            <TotalRecovered>960</TotalRecovered>
            <Date>2020-06-10T10:06:56Z</Date>
            <Lat>41.0000</Lat>
            <Lng>20.0000</Lng>
        </item>
        <item>
            <Country>Algeria</Country>
            <CountryCode>DZ</CountryCode>
            <Slug>algeria</Slug>
            <NewConfirmed>117</NewConfirmed>
            <TotalConfirmed>10382</TotalConfirmed>
            <NewDeaths>9</NewDeaths>
            <TotalDeaths>724</TotalDeaths>
            <NewRecovered>152</NewRecovered>
            <TotalRecovered>6951</TotalRecovered>
            <Date>2020-06-10T10:06:56Z</Date>
            <Lat>28.0000</Lat>
            <Lng>3.0000</Lng>
        </item>
   </Countries>
</CoronaInfections>

我希望GeoJSON如下所示:

{ "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
                "properties": {
                "radius": 1.0841103742476927, 
                "id": "AF", 
                "countryName": "Afghanistan" 
            },
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [33.0000, 65.0000]
                },
        },
        {
            "type": "Feature",
                "properties": {
                "radius": 0.06562558255966042, 
                "id": "AL", 
                "countryName": "Albania" 
            },
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [41.0000, 20.0000]
                },
        },
    ]
}

推荐的方法是什么?

我已经有一种方法,看起来不太好,因为它仅适用于xslt 1.0(我认为)和文本块。看到这里:https://xsltfiddle.liberty-development.net/naZYrpy/1

我更喜欢使用xslt 3.0和xml-to-json函数的更有效的方法,但是似乎无法添加我的其他json对象。

更多示例:1.不起作用:https://xsltfiddle.liberty-development.net/pNmCzsA

  1. 无效:https://xsltfiddle.liberty-development.net/ejivdGS/4

  2. 无效:https://xsltfiddle.liberty-development.net/bFWR5DQ/17

提前感谢:-)

json xml xslt geojson xslt-3.0
1个回答
0
投票

如果要直接使用XPath 3.1创建XDM映射和数组以将其序列化为JSON,请使用

© www.soinside.com 2019 - 2024. All rights reserved.