Обработка тегов дерева элементов Python в тегах XML

Я работаю с ярлыками xml с сайта dailymed.nlm.nih.gov. У меня возникла проблема при чтении противопоказаний, связанных с препаратом. Я хочу, чтобы весь контент был внутри тега, но он обрывается, как только я нажимаю на внутренний тег. Я попытался перебрать все подэлементы, но лучшее, что я мог сделать, это отобразить «Предупреждение». ";анурия; повышенная чувствительность к..." утрачена. Если кто-нибудь знает способ получить эти данные с помощью парсера, это очень поможет. Благодарю вас!

 <component>
        <section ID="LINK_8e9e0719-efa5-451c-bea3-d547298ad0a1">
           <id root="8e9e0719-efa5-451c-bea3-d547298ad0a1"/>
           <code code="34070-3" codeSystem="2.16.840.1.113883.6.1" displayName="CONTRAINDICATIONS SECTION"/>
           <title>CONTRAINDICATIONS</title>
           <text>
              <paragraph>Atenolol and chlorthalidone tablets are contraindicated in patients with: sinus bradycardia; heart block greater than first degree; cardiogenic shock; overt cardiac failure (see<content styleCode="bold">
                    <linkHtml href="#LINK_0df2629f-13c7-4b14-8664-475c32377c68">WARNINGS</linkHtml>
                 </content>); anuria; hypersensitivity to this product or to sulfonamide-derived drugs.</paragraph>
           </text>
           <effectiveTime value="20101001"/>
        </section>
     </component>

person hrtachetosing    schedule 10.02.2013    source источник


Ответы (1)


Предполагая, что вы используете что-то вроде следующего, вам нужно использовать ET.tostring, который получит весь текст дочерних элементов.

import xml.etree.ElementTree as ET
txt = """
<component>
<section ID="LINK_8e9e0719-efa5-451c-bea3-d547298ad0a1">
    <id root="8e9e0719-efa5-451c-bea3-d547298ad0a1"/>
    <code code="34070-3" codeSystem="2.16.840.1.113883.6.1" displayName="CONTRAINDICATIONS SECTION"/
    <title>CONTRAINDICATIONS</title>
    <text>
    <paragraph>Atenolol and chlorthalidone tablets are contraindicated in patients with: sinus brady
        <linkHtml href="#LINK_0df2629f-13c7-4b14-8664-475c32377c68">WARNINGS</linkHtml>
            </content>); anuria; hypersensitivity to this product or to sulfonamide-derived drugs.</
    </text>
    <effectiveTime value="20101001"/>
</section>
</component>"""

root = ET.fromstring(txt)

for e in root.iter('text'):
    print ">>"
    print ET.tostring(e, method="text")
    print "<<"

Дает

>>

    Atenolol and chlorthalidone tablets are contraindicated in patients with: sinus bradycardia; heart block greater than first degree; cardiogenic shock; overt cardiac failure (see
        WARNINGS
            ); anuria; hypersensitivity to this product or to sulfonamide-derived drugs.


<<
person sotapme    schedule 10.02.2013