XMLファイル生成のビデオ編集ソフトウェアがあります。このソフトウェアには、クリップの拡張のためのすべてのデータが含まれています。 XMLはソフトウェアに有効です。それが欠けている唯一のものは、フィールド・ドミナンスの要素です(私はそこに「上の値」を設定する必要があります)。 ファイルの構造がわかりにくい部分です。私は追加する必要がある要素がsequence - media - video - format - samplecharacteristics
分野であるxml.etree.ElementTreeを使用してxmeml形式のXMLに要素を追加しようとしています
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xmeml>
<xmeml version="5">
<sequence>
<name>to_color (Resolve)</name>
<duration>121597</duration>
<rate>
<!-- ... -->
</rate>
<in>-1</in>
<out>-1</out>
<timecode>
<!-- ... -->
</timecode>
<media>
<video>
<track>
<clipitem id="983_0121_01_1_5FF70094C4A64669BC77.mov 0">
<name>983_0121_01_1_5FF70094C4A64669BC77.mov</name>
<duration>271</duration>
<rate>
<timebase>25</timebase>
<ntsc>false</ntsc>
</rate>
<start>0</start>
<end>221</end>
<enabled>true</enabled>
<in>25</in>
<out>246</out>
<file id="983_0121_01_1_5FF70094C4A64669BC77.mov 2">
<duration>271</duration>
<rate>
<!-- ... -->
</rate>
<name>983_0121_01_1_5FF70094C4A64669BC77.mov</name>
<pathurl>file://Capture2/Capture2/SHARED/DAVINCI_Render/111.mxf</pathurl>
<timecode>
<!-- ... -->
</timecode>
<media>
<video>
<duration>271</duration>
<samplecharacteristics>
<width>1920</width>
<height>1080</height>
</samplecharacteristics>
</video>
</media>
</file>
<compositemode>normal</compositemode>
<filter>
<enabled>true</enabled>
<start>0</start>
<end>271</end>
<effect>
<name>Opacity</name>
<effectid>opacity</effectid>
<effecttype>motion</effecttype>
<mediatype>video</mediatype>
<effectcategory>motion</effectcategory>
<parameter>
<name>opacity</name>
<parameterid>opacity</parameterid>
<value>100</value>
<valuemin>0</valuemin>
<valuemax>100</valuemax>
</parameter>
</effect>
</filter>
</clipitem>
</track>
<format>
<samplecharacteristics>
<!-- this is what I need to add START -->
<fielddominance>upper</fielddominance>
<!-- this is what I need to add END-->
<width>1920</width>
<height>1080</height>
<pixelaspectratio>square</pixelaspectratio>
<rate>
<!-- ... -->
</rate>
<codec>
<!-- ... -->
</codec>
</samplecharacteristics>
</format>
</video>
<audio>
<track>
<!-- ... -->
</track>
</audio>
</media>
</sequence>
</xmeml>
:のように、これは以下のようになります。ここ です。 しかし、このタグも存在しますsequence - media - video - track - clipitem - file - media - video - samplecharacteristics
xml.etree.ElementTreeをパーサとして使用します。
import xml.etree.ElementTree as ET
tree = ET.parse(r'\\capture2\11\in.xml')
root = tree.getroot()
fieldd = ET.Element('fielddominance')
fieldd.set('field','upper')
for tag in root.iter('samplecharacteristics'):
tag.append(fieldd)
output_file = r'\\capture2\11\new.xml'
with open(output_file, 'wb') as out:
tree.write(out, encoding='utf-8')
これは、すべてのsamplecharacteristicsタグにfielddominanceを追加します。ここに は、私がしようとしています、そしてもちろん、私はそれをすべて間違っているんですよ。私は、属性としてではなく、タグ内に 'upper'値を設定する方法は知られていません。私が望む何
はformat
タグに<fielddominance>upper</fielddominance>
を書きますが、あなたが変更したいsamplecharacteristics
を隔離するためのElementTreeのlimited XPath supportを使用することができます<track>
タグ
感謝を!私はちょうど '(./sequence)'をルートとして追加しなければなりませんでした。追加したタグの後に改行を追加できますか? ' upper fielddominance> samplecharacteristics>'のように見えますが、これはまあまあです。私はただちょっとしたほうがいいです:) –
'fieldd.tail = '\ n''を試してみてください。 –
また、参照してください:http://effbot.org/zone/element-lib.htm#prettyprint –