【问题标题】:Please help me with this program to parse a file into an XML file请帮助我使用此程序将文件解析为 XML 文件
【发布时间】:2009-10-02 21:42:45
【问题描述】:

解析输入文本文件并生成 a) XML 文件和 b) SVG(也称为 XML)文件。

输入文本文件 (input.txt) 包含对全国多个农产品配送中心和存储中心的描述。每行描述单个配送中心 (dcenter) 或存储中心,每个中心都有许多属性;每个属性名称(例如代码)由其值用 = 分隔。

示例(input.txt)

dcenter: code=d1, loc=San Jose, x=100, y=100, ctype=ct1
dcenter: code=d2, loc=San Ramon, x=300, y=200, ctype=ct2
storage: code=s1, locFrom=d1, x=50, y=50, rtype=rt1
storage: code=s2, locFrom=d1, x=-50,y=100, rtype=rt1

程序所需的输出:

输出 1

<?xml version="1.0"?>
<dcenters>
<dcenter code="d1">
<loc> San Jose </loc>
<x> 100 </x>
<y> 100 </y>
<ctype> ct1 </ctype>
</dcenter>
<storage code="S1">
<locFrom> d1 </locFrom>
<x> 150 </x>
<y> 150 </y>
<rtype> rt1 </rtype>
</storage>
<storage code="S2">
<locFrom> d1 </locFrom>
<x> 50 </x>
<y> 200 </y>
<rtype> rt1 </rtype>
</storage>

请帮助我完成程序。我会很感激的。

【问题讨论】:

  • 您遇到的实际问题是什么?这看起来很简单。
  • 我读了这篇文章,心里想着嗯……我想知道是否可以反向运行 XSLT。事实证明,一些疯狂的人实际上实现了这一点。 reversexsl.com/j
  • 实际上我需要一个程序,它可以将上面显示为 input.txt 的输入文本文件解析为 xml 文件作为 output1。请帮帮我。

标签: python xml fileparsing


【解决方案1】:

假设输入在字符串s中;来自直接分配或来自 file.read:

s="""dcenter: code=d1, loc=San Jose, x=100, y=100, ctype=ct1
dcenter: code=d2, loc=San Ramon, x=300, y=200, ctype=ct2
storage: code=s1, locFrom=d1, x=50, y=50, rtype=rt1
storage: code=s2, locFrom=d1, x=-50,y=100, rtype=rt1"""

那么你可以这样:

print '<?xml version="1.0"?>'
print "<dcenters>"
for line in s.splitlines():
    type, fields = line.split(":")
    params = fields.split(",")
    code = params[0].split("=")[1].strip()
    print '<%s code="%s">' % (type, code)
    for p in params[1:]:
        ptype, pvalue = p.strip().split("=")
        print '<%s> %s </%s>' % (ptype, pvalue, ptype)
    print '</%s>' % type
print "</dcenters>"

不确定为什么示例输出中缺少 d2;我认为这是错误的。

【讨论】:

  • 感谢您回复 Martin..我非常感谢您的帮助。实际上,我需要一个程序,它可以将上面显示为 input.txt 的输入文本文件解析为 xml 文件作为 output1。请帮帮我。
  • 约翰,这是一个有用的程序。它是用 Python 编写的。如果你不能从那里弄清楚其余的,我想你真的不知道你在做什么。这听起来像是家庭作业,我有点惊讶你没有先尝试自己就得到答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
  • 1970-01-01
  • 2011-11-03
  • 2011-09-11
相关资源
最近更新 更多