原文发布时间:2013-12-13
作者:tenniwdy
对于基于web和开放标准数据,XML变得越来越普遍,XML里面也包含很多我们需要的信息与数据。因此,我们就需要转换或是提取出我们需要的数据信息,XML数据可以转换为很多数据,但如CAD或GIS数据比较麻烦,这是因为GIS数据基本上是扁平的、表格的或关系的,而XML是嵌套的或面向对象的。因此今天我就对XML进行简单的转换和修改。
一.XML文件的转换
加载读模块后,数据格式选择XML,打开XML的格式的参数选项,可以看到参数如下:
参数的设置前面已经说得比较明白了,这里就不再次说明。设置好读写模块,将不需要带有xml_属性删掉。
下面是使用Feature Paths方式读取的示例:
如XML的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<FeatureCollection>
<Contact>
<name>John</name>
<city>Vancouver</city>
<activeDate>
<from>11-22-99</from>
<to>12-11-09</to>
</activeDate>
<Coordinate_BOX id="101">
<coords><coord>-123.1,49.25</coord><coord> -122.9,49.15</coord></coords>
</Coordinate_BOX>
</Contact>
<Contact>
<name>June</name>
<city>Surrey</city>
<activeDate>
<from>02-25-05</from>
<to>9-15-10</to>
</activeDate>
<Coordinate_BOX id="102">
<coords><coord>-122.8,49.12</coord><coord>-122.5,49.0</coord></coords>
</Coordinate_BOX>
</Contact>
</FeatureCollection>
运行结果就得到一个包含两条数据6个属性的Excel数据。
二.XML文件的修改
XML文件的结构的点结构点一般都比较多,在其中某一些节点修改就比较麻烦,如果用XML的转换器来进行修改就方便很多。接下来就简单介绍一下XMLUpdater对XML数据的修改。对每个更新的文档,需要一个XML路径表达式来确定被修改的项目位置。这个路径可能会有多个项目,在这种情况下,所有的项目都会被修改。替换已有项目或者插入新项目,给出两个参数来指定添加到文档的值。这个值可以是一个简单文本,也可以是一个XQuery表达式。
添加读模块需要注意的是读取XML选择的(如下图),因为所需修改数据是所有数据中的某一个节点,所以就将整个文件以文本的方式读取。参数设置中的Read Whole File at Once设置为YES。
再添加一个读模块,读取需要更新的CSV数据,参数设置中勾选“文件有命名字段行”。数据内容如下图:
添加转换器XMLUpdater和写模块后工作空间如下:
参数设置如下:
更新类型有很多,可以根据自己的需要进行选择。
XML路径是被替换的数据节点位置,如:
<Contact>
<name>John</name>
表达方式就是://Contact/name。
值类型就根据数据来选择,值设置如下:
运行结果如下:
前面的示例数据的name已经被替换了,XMLUpdater的XML修改功能很强大很复杂,其他内容就不一一讲解了。