首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >请帮助我使用这个程序将一个文件解析成一个XML文件

请帮助我使用这个程序将一个文件解析成一个XML文件
EN

Stack Overflow用户
提问于 2009-10-02 21:42:45
回答 1查看 180关注 0票数 0

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

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

示例(input.txt)

代码语言:javascript
复制
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

代码语言:javascript
复制
<?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>

请帮我完成这个程序。我会非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-10-02 21:54:13

假设输入是字符串s;要么是直接赋值,要么是file.read:

代码语言:javascript
复制
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"""

然后你可以这样做:

代码语言:javascript
复制
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;我认为这是错误的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1511950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档