私はXSLTを使って簡単なXML - > CSVスクリプトを作ろうとしています。私はetreeがタグを出力したいと思っているようです...誰か回避策を知っていますか?はい、私はこの投稿を見ました:XML to CSV Using XSLT。Python etree XSLTタグ出力が必要ですか?
以下を参照してください。
ここに参考用のサンプルXMLデータがあります。ヘッダーを書くことさえできなかったので、私のコードはデータで何もしません。
import sys
from lxml import etree
system_file = sys.argv[1]
xml_file = sys.argv[2]
sys_txt = open(system_file,"r").read()
xsl_txt = open("csv_file.xslt","r").read()
sysroot = etree.fromstring(sys_txt)
xslroot = etree.fromstring(xsl_txt)
transform = etree.XSLT(xslroot)
with open(xml_file, "w") as f:
f.write(etree.tostring(transform(sysroot)))
このXSLTコードが動作しない(etree.tostring ... =なし):
<projects>
<project>
<name>Shockwave</name>
<language>Ruby</language>
<owner>Brian May</owner>
<state>New</state>
<startDate>31/10/2008 0:00:00</startDate>
</project>
<project>
<name>Other</name>
<language>Erlang</language>
<owner>Takashi Miike</owner>
<state> Canceled </state>
<startDate>07/11/2008 0:00:00</startDate>
</project>
</projects>
は、ここに私のスクリプトです
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
Hi
</xsl:template>
</xsl:stylesheet>
しかし、このXSLTは、作業を行います... etreeはXMLファイルを出力する必要がありますか?私は最後にそれを削除し、その後、ダミーのタグを進めることができると思っています。この時点で
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<dummy>
Hi
</dummy>
</xsl:template>
</xsl:stylesheet>
...
ありがとうございます。それは動作します。私は興味がありますが、なぜetreeにはtostringメソッドが必要ですか?ちょうどきれいな印刷用です – user3700949
これは通常、XML要素、/ treeを出力するために使用され、XML、テキスト、HTMLなどのXSLT変換結果は出力されません。 – har07