Attribute im Xpath-local-name()

Dies ist ein kleines Beispiel meiner xml-Datei.

<w:p xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
   <w:pPr>
      <w:rPr>
         <w:highlight w:val="yellow"/>
      </w:rPr>
   </w:pPr>
   <w:bookmarkStart w:id="0" w:name="_GoBack"/>
   <w:bookmarkEnd w:id="0"/>
   <w:r w:rsidRPr="00D1434D">
      <w:rPr>
         <w:rFonts w:ascii="Times New Roman"
                   w:eastAsia="MS PGothic"
                   w:hAnsi="Times New Roman"/>
         <w:b/>
         <w:color w:val="000000"/>
         <w:sz w:val="24"/>
         <w:szCs w:val="24"/>
         <w:highlight w:val="yellow"/>
      </w:rPr>
      <w:t xml:space="preserve">Responses to </w:t>
   </w:r>
   <w:r w:rsidR="00335D4A" w:rsidRPr="00D1434D">
      <w:rPr>
         <w:rFonts w:ascii="Times New Roman"
                   w:eastAsia="MS PGothic"
                   w:hAnsi="Times New Roman"/>
         <w:b/>
         <w:color w:val="000000"/>
         <w:sz w:val="24"/>
         <w:szCs w:val="24"/>
         <w:highlight w:val="yellow"/>
         <w:lang w:eastAsia="ja-JP"/>
      </w:rPr>
      <w:t>the Reviewer</w:t>
   </w:r>
</w:p> 

Möchte ich zum extrahieren von text mit der w:highlight tag speziell mit dem Attribut value = "gelb" . Ich suchte für Sie, aber war nicht in der Lage zu kommen mit einer Lösung.

Folgende Werke für highlight-im Allgemeinen:

for t in source.xpath('.//*[local-name()="highlight"]/../..//*[local-name()="t"]'):
     do something  

Habe ich versucht :

for t in lxml_tree.xpath('//*[local-name()="highlight"][@val="yellow"]/../..//*[local-name()="t"]'):

dies nicht funktioniert, gibt nichts zurück..

  • Für die Fragen der Zukunft, stellen Sie sicher, dass Ihre XML korrekt formatiert und lesbar ist (eine unglaublich lange Linie nicht). Auch die w: Präfix wurde nicht deklariert und Ihre XML-snippet, das nicht wohlgeformt ist, weil </w:p> fehlte.
  • wie wird die xml-formatierte Daten auf SO??
  • dieses question war etwas ähnlich , aber es funktioniert nicht auf local-name().
  • Man kann nicht formatieren Sie es automatisch. Entweder tun Sie es manuell, oder z.B. durchführen einer XSLT-Identität, Transformation, richtig Einrückungen der XML.
Schreibe einen Kommentar