الرجاء مساعدتي في هذا البرنامج لتحليل ملف في ملف XML

StackOverflow https://stackoverflow.com/questions/1511950

  •  19-09-2019
  •  | 
  •  

سؤال

لتحليل ملف نص إدخال وإنشاء ملف XML و B) ملف SVG (أيضا XML).

يحتوي ملف إدخال الإدخال (INPUT.TXTXT) على وصف عدد من مراكز توزيع الإنتاج ومراكز التخزين في جميع أنحاء البلاد. يصف كل سطر إما مركز توزيع واحد (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>

الرجاء مساعدتي في البرنامج. سأكون ممتنا حقا.

هل كانت مفيدة؟

المحلول

لنفترض أن المدخلات في سلسلة 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 مفقود من إخراج العينة؛ أفترض ذلك عن طريق الخطأ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top