2016-05-20 6 views
-2

私はxmlデータを生成しているPythonスクリプト(2.7)を持っています。私は私の持っていることができる方法のPython 2.7、でxmlで連続番号を生成する方法は? (Python 2.7)

<objectArray> 
    <object> 
     <title>Title</title> 
     <sequenceOrder>1</sequenceOrder> 
    </object> 
    <object> 
     <title>Title</title> 
     <sequenceOrder>2</sequenceOrder> 
    </object> 
    <object> 
     <title>Title</title> 
     <sequenceOrder>3</sequenceOrder> 
    </object> 
</objectArray> 

:ただし、各オブジェクトのための私の配列で、私はそれが(sequenceOrderタグを参照してください)の下に1

例で始まる新しい連番を生成する必要がありますスクリプトは、私のXML配列内の各オブジェクトのsequenceOrder部分の新しい番号(その前にある数字の+1)を生成しますか?

私の配列には数十万のオブジェクトがあることに注意してください。

私はPythonの全面的な新機能です/一般的なコーディングなので、助けてください!必要に応じて追加情報を提供してくれることを嬉しく思います。

+0

全体的に同じタイトルになりますか? –

+2

あなたのスクリプトはどのようにXMLを生成していますか?あなたの質問を作成し、コードの関連部分を追加してください。 –

+0

@VedangMehtaいいえ、既にスクリプトのタイトル部分が設定されています。 – clingy

答えて

0

自分でシリアル化するオブジェクトを作成する場合は、itertools.countを使用して一意の連続する整数を取得できます。それは次のようになります非常に抽象的に

import itertools 
counter = itertools.count() 

o = create_object() 
o.sequentialNumber = next(counter) 

o2 = create_another_object() 
o.sequentialNumber = next(counter) 

create_xml_doc(my_objects) 
+0

ありがとう、私はこれを調べます! – clingy

0

はい、あなたはそれぞれのXML要素のための新しいシーケンス番号を生成することができます。ここでlxmlを使用して、サンプル出力を生成する方法である:

import lxml.etree as et 

root = et.Element('objectArray') 
for i in range(1, 4): 
    obj = et.Element('object') 
    title = et.Element('title') 
    title.text = 'Title' 
    obj.append(title) 
    sequenceOrder = et.Element('sequenceOrder') 
    sequenceOrder.text = str(i) 
    obj.append(sequenceOrder) 
    root.append(obj) 

print et.tostring(root, pretty_print=True) 
+0

これはあなたの範囲を知っていますか? – clingy

0

同僚は、ソリューションを提供:

その後、

<sequenceOrder>""" + str(sequence_order) + """</sequenceOrder> 

後のXMLで、その後

sequence_order = 1 

を設定しました

if test is False: 
        with open('uniquetest.csv', 'a') as write: 
         writelog = csv.writer(write, delimiter= '\t', quoting=csv.QUOTE_ALL) 
         writelog.writerow((title,)) 

        try: 
         f = open(file + '_output.xml', 'r') 
         f = open(file + '_output.xml', 'a') 
         f.write(DASxml_bottom + DASxml_top + digital_objects) 
         f.close() 
         sequence_order = sequence_order + 1 
#      f = open('log.txt', 'a') 
#      f.write(title + str(roll) + label_flag + str(id) + str(file_size) + file_path + """ 
# """) 
#      f.close() 

私はスクリプト全体を提供していないので、それは意味をなさないかもしれませんが、それは私の目的のために働いた!ご意見ありがとうございます

関連する問題