用于下载 XML 并使用 XPath 生成新脚本的脚本
Script for downloading XML and generating new one with XPath
我有一个 xml 文件,电子商务平台每隔几个小时更新一次。我想用 xpath 过滤器生成一个单独的 xml 文件。
XPath 代码是一行。
我应该使用哪种语言来生成 xml?我在哪里可以找到任何模板来让它发挥作用?
好的,所以我得到了 xml 文件:
<o id="17" url="url" price="15.00" avail="1" weight="0" stock="3" set="0"
basket="0">
<cat><![CDATA[ category ]]></cat>
<name><![CDATA[ name ]]></name>
<imgs><main url="url"/></imgs>
<desc><![CDATA[description]]></desc>
<attrs><a name="text"><![CDATA[ Dev ]]></a>
<a name="Code"><![CDATA[ ]]></a>
<a name="EAN"><![CDATA[ EAN ]]></a>
</attrs>
<o id="18" url="url" price="15.00" avail="1" weight="0" stock="3" set="0"
basket="0">
<cat><![CDATA[ category2 ]]></cat>
<name><![CDATA[ name ]]></name>
<imgs><main url="url"/></imgs>
<desc><![CDATA[description]]></desc>
<attrs><a name="text"><![CDATA[ Dev ]]></a>
<a name="Code"><![CDATA[ ]]></a>
<a name="EAN"><![CDATA[ EAN ]]></a>
</attrs>
有很多产品类别,但我需要单独 xml 只需要来自 "category2" 的产品以及产品的完整结构。我发现这是手动制作的:
//o[normalize-space(cat) = 'category2']
平台每隔几个小时更新一次新产品文件。所以我想要下载这个文件的脚本,自动生成新的 xml 只有 category2.
简单地使用专用语言XSLT,旨在将XML 文件转换为运行 需要的XPath 表达式。具体调用身份转换以按原样复制整个文档,并删除所有其他不符合空模板条件的节点。
几乎所有现代编程语言(Java、C#、Python、PHP、Perl、R、VB,甚至 Bash 和 PowerShell)一些软件(Excel、SAS 等)通常通过 XML 库或模块维护对 XSLT 1.0 的支持。此外,专用处理器可以 运行 您的 XSLT 脚本,包括 Saxon、Xalan、xsltproc。有关详细信息,请参阅 tag page。
XSLT (另存为.xsl文件,特殊的.xml文件)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- IDENTITY TRANSFORM -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- REMOVE NODES -->
<xsl:template match="o[normalize-space(cat) != 'category2']"/>
</xsl:stylesheet>
几个 XSLT 处理器示例:
Xalan 命令行 (使用 Java 编译器)
java org.apache.xalan.xslt.Process -IN source.xml -XSL script.xsl -OUT output.xml
Saxon 命令行 (使用 Java 编译器)
java net.sf.saxon.Transform -s:source.xml -xsl:script.xsl -o:output.xml
java -jar dir/saxon9he.jar -s:source.xml -xsl:script.xsl -o:output.xml
xsltproc 命令行 (对于 Unix 机器)
xsltproc myScript.xsl Output.xml > myDesiredResult.xml
Powershell 脚本 (对于 Windows 机器)
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform;
$xslt.Load("C:\Path\To\Script.xsl");
$xslt.Transform("C:\Path\To\Input.xml", "C:\Path\To\Output.xml");
我有一个 xml 文件,电子商务平台每隔几个小时更新一次。我想用 xpath 过滤器生成一个单独的 xml 文件。
XPath 代码是一行。
我应该使用哪种语言来生成 xml?我在哪里可以找到任何模板来让它发挥作用?
好的,所以我得到了 xml 文件:
<o id="17" url="url" price="15.00" avail="1" weight="0" stock="3" set="0"
basket="0">
<cat><![CDATA[ category ]]></cat>
<name><![CDATA[ name ]]></name>
<imgs><main url="url"/></imgs>
<desc><![CDATA[description]]></desc>
<attrs><a name="text"><![CDATA[ Dev ]]></a>
<a name="Code"><![CDATA[ ]]></a>
<a name="EAN"><![CDATA[ EAN ]]></a>
</attrs>
<o id="18" url="url" price="15.00" avail="1" weight="0" stock="3" set="0"
basket="0">
<cat><![CDATA[ category2 ]]></cat>
<name><![CDATA[ name ]]></name>
<imgs><main url="url"/></imgs>
<desc><![CDATA[description]]></desc>
<attrs><a name="text"><![CDATA[ Dev ]]></a>
<a name="Code"><![CDATA[ ]]></a>
<a name="EAN"><![CDATA[ EAN ]]></a>
</attrs>
有很多产品类别,但我需要单独 xml 只需要来自 "category2" 的产品以及产品的完整结构。我发现这是手动制作的:
//o[normalize-space(cat) = 'category2']
平台每隔几个小时更新一次新产品文件。所以我想要下载这个文件的脚本,自动生成新的 xml 只有 category2.
简单地使用专用语言XSLT,旨在将XML 文件转换为运行 需要的XPath 表达式。具体调用身份转换以按原样复制整个文档,并删除所有其他不符合空模板条件的节点。
几乎所有现代编程语言(Java、C#、Python、PHP、Perl、R、VB,甚至 Bash 和 PowerShell)一些软件(Excel、SAS 等)通常通过 XML 库或模块维护对 XSLT 1.0 的支持。此外,专用处理器可以 运行 您的 XSLT 脚本,包括 Saxon、Xalan、xsltproc。有关详细信息,请参阅 tag page。
XSLT (另存为.xsl文件,特殊的.xml文件)
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- IDENTITY TRANSFORM -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- REMOVE NODES -->
<xsl:template match="o[normalize-space(cat) != 'category2']"/>
</xsl:stylesheet>
几个 XSLT 处理器示例:
Xalan 命令行 (使用 Java 编译器)
java org.apache.xalan.xslt.Process -IN source.xml -XSL script.xsl -OUT output.xml
Saxon 命令行 (使用 Java 编译器)
java net.sf.saxon.Transform -s:source.xml -xsl:script.xsl -o:output.xml
java -jar dir/saxon9he.jar -s:source.xml -xsl:script.xsl -o:output.xml
xsltproc 命令行 (对于 Unix 机器)
xsltproc myScript.xsl Output.xml > myDesiredResult.xml
Powershell 脚本 (对于 Windows 机器)
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform;
$xslt.Load("C:\Path\To\Script.xsl");
$xslt.Transform("C:\Path\To\Input.xml", "C:\Path\To\Output.xml");