特定web服务中的XML到CSV
我试图做的是将全球天气GetCitiesByCountry Web服务XML转换为CSV 我有XML:特定web服务中的XML到CSV,xml,web-services,csv,xslt,Xml,Web Services,Csv,Xslt,我试图做的是将全球天气GetCitiesByCountry Web服务XML转换为CSV 我有XML: <string xmlns="http://www.webserviceX.NET"> <NewDataSet> <Table> <Country>Canada</Country> <City>Quaqtaq Airport</City>
<string xmlns="http://www.webserviceX.NET">
<NewDataSet>
<Table>
<Country>Canada</Country>
<City>Quaqtaq Airport</City>
</Table>
<Table>
<Country>Canada</Country>
<City>Hudson Bay, Sask.</City>
</Table>
这个XSL只生成XML头,没有更多的数据
编辑:
所以答案是文件的编码。代码页在UTF-8和UTF-16之间移动。我只需将XML中的字符串“UTF-16”更改为“UTF-8”,或者更改文件的代码页
我使用了相同的XSL。只需删除名称空间xmlns=”http://www.webserviceX.NET“从PBIE提到的输入或尝试此
;
首先,您有一个名称空间问题。例如,这对我帮助不大。仍然没有结果。“仍然没有结果。”发布你修改过的样式表。如果你知道解决方案,就发布它。@pbies:与其坚持按你想要的形式填鸭式地给出答案,不如阅读迈克尔的。它适用于你的情况(尽管这个问题可能不是传统意义上的重复);理解Michael的答案对于在这一领域工作和解决您的特定问题至关重要。谢谢。解决方案是编写处理给定输入的XSLT,而不是修改输入(这可能是不可能的)。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="no"/>
<xsl:template match="/">
<xsl:for-each select="string/NewDataSet/Table">
<xsl:value-of select="Country"/>
<xsl:text>;</xsl:text>
<xsl:value-of select="City"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Canada;Quaqtaq Airport
Canada;Hudson Bay, Sask.