0

次の XML の一部を解析できるようにする簡単なプログラムを作成しようとしています。これまでのところ、次の例では、探している結果が得られていません。

私はこれらの XML ファイルの多くに遭遇し、一般的に少数のタグの後に情報が必要です。elementtree を使用して<Id>、そのタグに含まれている情報を検索して取得できるようにする最善の方法は何ですか。私は次のようなことを試していました

for Reel in root.findall('Reel'):
...     id = Reel.findtext('Id')
...     print id

<Id>urn: などのすべてのインスタンスを探して取得する方法はありますか? すべてをトラバースして検索するコード<what I want>など。

これは、私が通常扱うものの非常に切り捨てられたバージョンです。

これは私が望んでいたものをまったく得ませんでした。任意の XML ファイルに一致<what I want>してそのタグの内容を取得するだけの簡単なものはありますか、またはルート/子などとの関係を知るために十分に XML の構造を知る必要がありますか?

 <Reel>
 <Id>urn:uuid:632437bc-73f9-49ca-b687-fdb3f98f430c</Id>
 <AssetList>
  <MainPicture>
   <Id>urn:uuid:46afe8a3-50be-4986-b9c8-34f4ba69572f</Id>
   <EditRate>24 1</EditRate>
   <IntrinsicDuration>340</IntrinsicDuration>
   <EntryPoint>0</EntryPoint>
   <Duration>340</Duration>
   <FrameRate>24 1</FrameRate>
   <ScreenAspectRatio>2048 858</ScreenAspectRatio>
  </MainPicture>
  <MainSound>
   <Id>urn:uuid:1fce0915-f8c7-48a7-b023-36e204a66ed1</Id>
   <EditRate>24 1</EditRate>
   <IntrinsicDuration>340</IntrinsicDuration>
   <EntryPoint>0</EntryPoint>
   <Duration>340</Duration>
  </MainSound>
 </AssetList>
</Reel>

@Mata は完全に機能しましたが、それを別の XML ファイルのさまざまな値に使用しようとすると、顔が平らになりました。たとえば、ファイルのこのセクションはどうでしょうか。残念ながら、すべてを投稿することはできませんでした。KeyId の後に続くものを取得したい場合はどうすればよいですか?

<?xml version="1.0" encoding="UTF-8" standalone="no" ?><DCinemaSecurityMessage xmlns="http://www.digicine.com/PROTO-ASDCP-KDM-20040311#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:enc="http://www.w3.org/2001/04/xmlenc#">
  <!-- Generated by Wailua Version 0.3.20 -->
  <AuthenticatedPublic Id="ID_AuthenticatedPublic">
    <MessageId>urn:uuid:7bc63f4c-c617-4d00-9e51-0c8cd6a4f59e</MessageId>
    <MessageType>http://www.digicine.com/PROTO-ASDCP-KDM-20040311#</MessageType>
    <AnnotationText>SPIDERMAN-3_FTR_S_EN-XX_US-13_51_4K_PH_20070423_DELUXE ~ KDM for Quvis-10010.pem</AnnotationText>
    <IssueDate>2007-04-29T04:13:43-00:00</IssueDate>
    <Signer>
      <dsig:X509IssuerName>dnQualifier=BzC0n/VV/uVrl2PL3uggPJ9va7Q=,CN=.deluxe-admin-c,OU=.mxf-j2c.ca.cinecert.com,O=.ca.cinecert.com</dsig:X509IssuerName>
      <dsig:X509SerialNumber>10039</dsig:X509SerialNumber>
    </Signer>
    <RequiredExtensions>
      <Recipient>
        <X509IssuerSerial>
          <dsig:X509IssuerName>dnQualifier=RUxyQle0qS7qPbcNRFBEgVjw0Og=,CN=SM.QuVIS.com.001,OU=QuVIS Digital Cinema,O=QuVIS.com</dsig:X509IssuerName>
          <dsig:X509SerialNumber>363</dsig:X509SerialNumber>
        </X509IssuerSerial>
        <X509SubjectName>CN=SM MD LE FM.QuVIS_CinemaPlayer-3d_10010,OU=QuVIS,O=QuVIS.com,dnQualifier=3oBfjTfx1me0p1ms7XOX\+eqUUtE=</X509SubjectName>
      </Recipient>
      <CompositionPlaylistId>urn:uuid:336263da-e4f1-324e-8e0c-ebea00ff79f4</CompositionPlaylistId>
      <ContentTitleText>SPIDERMAN-3_FTR_S_EN-XX_US-13_51_4K_PH_20070423_DELUXE</ContentTitleText>
      <ContentKeysNotValidBefore>2007-04-30T05:00:00-00:00</ContentKeysNotValidBefore>
      <ContentKeysNotValidAfter>2007-04-30T10:00:00-00:00</ContentKeysNotValidAfter>
      <KeyIdList>
        <KeyId>urn:uuid:9851b0f6-4790-0d4c-a69d-ea8abdedd03d</KeyId>
        <KeyId>urn:uuid:8317e8f3-1597-494d-9ed8-08a751ff8615</KeyId>
        <KeyId>urn:uuid:5d9b228d-7120-344c-aefc-840cdd32bbfc</KeyId>
        <KeyId>urn:uuid:1e32ccb2-ab0b-9d43-b879-1c12840c178b</KeyId>
        <KeyId>urn:uuid:44d04416-676a-2e4f-8995-165de8cab78d</KeyId>
        <KeyId>urn:uuid:906da0c1-b0cb-4541-b8a9-86476583cdc4</KeyId>
        <KeyId>urn:uuid:0fe2d73a-ebe3-9844-b3de-4517c63c4b90</KeyId>
        <KeyId>urn:uuid:862fa79a-18c7-9245-a172-486541bef0c0</KeyId>
        <KeyId>urn:uuid:aa2f1a88-7a55-894d-bc19-42afca589766</KeyId>
        <KeyId>urn:uuid:59d6eeff-cd56-6245-9f13-951554466626</KeyId>
        <KeyId>urn:uuid:14a13b1a-76ba-764c-97d0-9900f58af53e</KeyId>
        <KeyId>urn:uuid:ccdbe0ae-1c3f-224c-b450-947f43bbd640</KeyId>
        <KeyId>urn:uuid:dcd37f10-b042-8e44-bef0-89bda2174842</KeyId>
        <KeyId>urn:uuid:9dd7103e-7e5a-a840-a15f-f7d7fe699203</KeyId>
      </KeyIdList>
    </RequiredExtensions>
    <NonCriticalExtensions/>
  </AuthenticatedPublic>
  <AuthenticatedPrivate Id="ID_AuthenticatedPrivate"><enc:EncryptedKey xmlns:enc="http://www.w3.org/2001/04/xmlenc#">
<enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
<ds:DigestMethod xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
</enc:EncryptionMethod>
4

3 に答える 3

1

XPathはあなたの好みに合っているように思えます。XPath を使用すると、構造を知っている限り、探しているものを正確に XML ドキュメントに照会できます。

于 2013-06-13T19:43:00.190 に答える
0

これが私がしなければならないことです。これは、必要なものを見つけるために機能します。

for node in tree.getiterator():
...     if 'KeyId' in node.tag:
...             mylist = node.tag
...             print(mylist)
... 
于 2013-06-14T14:37:17.560 に答える