1

書き出しを行うときに Final Cut Pro X が吐き出す XML をいじっています。SimpleXML を使用して解析を行っていますが、いくつかの問題が発生しています。私はphpウェブサイトにある例を使用しました - http://www.php.net/manual/en/simplexml.examples-basic.phpしかし、私のXMLはもう少し複雑です - ここに例があります:

    <fcpxml>
    <project name="Rought Cut 2" uid="A9BCAB6E-6D54-4809-834D-F764A741A71B" eventID="909C357C-BB9B-41E3-87A2-FC6AE3E940A0" location="file://localhost/Volumes/VideoMain/Final%20Cut%20Projects/Storm%20Chasing%20test/Rought%20Cut%202/">
        <resources>
            <format id="r1" name="FFVideoFormat1080p5994" frameDuration="1001/60000s" width="1920" height="1080"/>
            <projectRef id="r2" name="Storm Chasing June 7" uid="909C357C-BB9B-41E3-87A2-FC6AE3E940A0"/>
            <media id="r3" name="Start teaser" uid="Wn75vMb1R2anXdP2aQX5+g" projectRef="r2">
                <sequence duration="393393/72000s" format="r4" tcStart="0s" tcFormat="NDF" audioLayout="stereo" renderFormat="FFRenderFormatProRes422Proxy">
                    <spine>
                        <clip offset="0s" name="HS700 - 00023" duration="445445/120000s" start="5630434810/60000s" format="r1" tcFormat="DF">
                            <video offset="5629760136/60000s" ref="r5" name="00023 - v1" duration="897897/60000s" start="5629760136/60000s">
                                <audio lane="-1" offset="4503808109/48000s" ref="r5" name="00023 - a1" duration="719039/48000s" start="4503808109/48000s" role="dialogue" outCh="L, R"/>
                            </video>
                            <title lane="1" offset="2252173924/24000s" ref="r6" name="Basic Title: Amateur Storm Chasing Mk2
" duration="360360/120000s" start="86486400/24000s">
                                <text>Amateur Storm Chasing Mk2
</text>
                            </title>
                            <keyword start="234573339/2500s" duration="897897/60000s" value="Hs700"/>
                            <metadata>
                                <md key="com.apple.proapps.studio.reel" value="TS700"/>
                                <md key="com.apple.proapps.studio.scene" value="89"/>
                            </metadata>
                        </clip>
                        <clip offset="267267/72000s" name="GH2 - 2012-06-07 20:27:30" duration="126126/72000s" start="45045/72000s" tcFormat="NDF">
                            <video offset="0s" ref="r7" name="2012-06-07 20:27:30 - v1" duration="1966965/72000s">
                                <audio lane="-1" offset="0s" ref="r7" name="2012-06-07 20:27:30 - a1" duration="1311310/48000s" role="dialogue" outCh="L, R"/>
                            </video>

XML は単なる単純な 123 ではありませんが、それをどのように解析するのか疑問に思っていました。これは私が使用していたものですが、MAMP / php エラー ログを見ると、多くのエラーが発生していることがわかります - SimpleXMLElement::__construct(): Entity: line 14: parser error : (注: このエラーは関連していません私が投稿したコード)。

これは私が遊んでいたコードです:

<?php
include 'example.php';
$fcpxml = new SimpleXMLElement($xmlstr);
echo $fcpxml->project['name'];
?>

シンプルなものだとおもいます。たとえば、解析している XML ファイルでは二重引用符が使用されており、例では単一引用符が使用されていることがわかります。ファイル内の特殊文字が気に入らないのかもしれません。FCPx XML はかなり複雑に見え、プログラミングは苦手ですが、理解できます。私のすべてのクリップ名、その長さ、キーワード、その他のものをきれいにフォーマットされた素敵なページまたはドキュメントに吐き出すスクリプトを書くのは楽しいでしょう.

4

1 に答える 1

0

私はあなたの XML 解析ライブラリに詳しくないので、パーサー自体について直接話すことはできません。ただし、投稿した XML を見ると、奇妙な一致に気付きました。エラーは 14 行目で、XML の 14 行目は引用符の改行から始まっています。

<title lane="1" offset="2252173924/24000s" ref="r6" name="Basic Title: Amateur Storm Chasing Mk2
" duration="360360/120000s" start="86486400/24000s">

属性nameには開始引用符とBasic Title: Amateur Storm Chasing Mk2最初の行がありますが、終了引用符は次の行にあります。一般に、パーサーは、非常に特殊な方法で行われない限り、引用符で囲まれた文字列内の改行を嫌います。これが Stack Overflow への貼り付けによるものではないことを確認するには、XML を含む元のファイルを調べて、そこに改行があるかどうかを確認します (ウィンドウを広くする、表示オプションで改行をオフにするなど)。 . その場合は、行を元に戻して再試行してください。

<title lane="1" offset="2252173924/24000s" ref="r6" name="Basic Title: Amateur Storm Chasing Mk2" duration="360360/120000s" start="86486400/24000s">

幸運を!

于 2013-05-10T01:15:11.660 に答える