我想知道如何从以下格式拆分数据:
<datas>
<data>
<name>Name1</name>
</data>
<data>
<name>Name2</name>
</data>
</datas>
为以下格式:
<data><name>Name1</name></data>
<data><name>Name2</name></data>
解析后的数据将发送到 Python 脚本,如下所示:
python script.py <data><name>Name1<name></data>
python script.py <data><name>Name2<name></data>
我尝试过如下命令:
echo 'cat /datas/data' | xmllint --shell file.xml
但是如何将所需格式的输出传递给 Python 脚本呢?
答案1
我会预处理数据XML小星:
$ xml sel -t -c '/datas/data' -nl data.xml
<data>
<name>Name1</name>
</data><data>
<name>Name2</name>
</data>
那么这取决于你的Python脚本想要如何读取这些数据。希望它来自文件或标准输入......
答案2
我会使用 xslt。
xslt 样式表看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/datas">
<xsl:apply-templates select="data"/>
</xsl:template>
<xsl:template match="data">
<data><name><xsl:value-of select="./name"/></name></data><xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
使用程序 xsltproc 进行转换。
假设您的输入文件名为 in.xml
xslt 样式表命名为 in.xsl
那么电话是
xsltproc in.xsl in.xml
输出:
<?xml version="1.0"?>
<data><name>Name1</name></data>
<data><name>Name2</name></data>