使用python

时间:2016-07-07 20:31:21

标签: python xml parsing

我正在尝试将多个XML文件解析为列/表,但有些XML具有不同的数据,有些并不重要,而其他数据很重要。

即(XML数据):

<setId root="ABD6ECF0-DC8E"/>
<component>
            <section>
                <id root="F08C6A14-8165-458A-BDC8-0B5878EB814D"/>
                <code code="34069-5" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" displayName="HOW SUPPLIED SECTION"/>
                <title mediaType="text/x-hl7-title+xml">HOW SUPPLIED</title>
                <text>
                    <paragraph>RENESE (polythiazide) Tablets are available as:</paragraph>
                    <paragraph>1 mg white, scored tablets in bottles of 100 (NDC 0069-3750-66).</paragraph>
                    <paragraph>2 mg yellow, scored tablets in bottles of 100 (NDC 0069-3760-66).</paragraph>
                    <paragraph>4 mg white, scored tablets in bottles of 100 (NDC 0069-3770-66).</paragraph>
                </text>
                <effectiveTime value="20051214"/>
            </section>
        </component>

<component>
            <section>
                <id root="42CB916B-BB58-44A0-B8D2-89B4B27F04DF"/>
                <code code="34089-3" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" displayName="DESCRIPTION SECTION"/>
                <title mediaType="text/x-hl7-title+xml">DESCRIPTION</title>
                <text>
                    <paragraph>Renese<sup>&#174;</sup> is designated generically as polythiazide, and chemically as 2<content styleCode="italics">H</content>-1,2,4-Benzothiadiazine-7-sulfonamide, 6-chloro-3,4-dihydro-2-methyl-3-[[(2,2,2-trifluoroethyl)thio]methyl]-, 1,1-dioxide. It is a white crystalline substance, insoluble in water but readily soluble in alkaline solution.</paragraph>
                    <paragraph>Inert Ingredients: dibasic calcium phosphate; lactose; magnesium stearate; polyethylene glycol; sodium lauryl sulfate; starch; vanillin. The 2 mg tablets also contain: Yellow 6; Yellow 10.</paragraph>
                </text>
                <effectiveTime value="20051214"/>
            </section>
        </component>
        <component>
            <section>

                         <manufacturedProduct>
                         <manufacturedMedicine>
                            <code code="0069-3750" codeSystem="2.16.840.1.113883.6.69" codeSystemName="FDA" displayName="NDC"/>
                            <name>Renese</name>
                            <formCode code="C42998" codeSystem="2.16.840.1.113883.3.26.1.1" displayName="TABLET"/>
                         <manufacturedProduct/>
                         <manufacturedMedicine/>

我希望最终结果如下(在setID,description和name中作为列名):

setID

ABD6ECF0-DC8E

描述

Renese一般指定为
聚噻嗪,化学上为2H-1,2,4- 苯并噻二嗪-7-磺酰胺,6-氯 - 3,4-二氢-2-甲基-3 - [[(2,2,2- - 三氟乙基)硫代]甲基] - ,1,1-二氧化物。它是一个 白色结晶物质,不溶于水但是 易溶于碱性溶液。

命名

Renese

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您正在尝试解析从此网站下载的XML:https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=abd6ecf0-dc8e-41de-89f2-1e36ed9d6535

实际上它不是常规XML,而是HL7类型,特别是(版本3 {urn:hl7-org:v3})。

为了快速处理这个问题,有一个开源工具(Mirth:https://www.mirth.com/)可以很好地完成工作,(Iguana:http://www.interfaceware.com/iguana.html,商业用途)。 顺便说一句,感谢你的帖子,它给了我测试Mirth工具的机会。

实际上,您需要将xml转换为HL7V3格式以获取所需信息。下面是一个我用于xml和输出的频道示例(https://www.dropbox.com/sh/ibosv56m0monmcj/AACL7t6ZKOi4P-Bwpi75KhUXa?dl=0)。

有关详细信息,我建议您查看此处:Convert XML to HL7 messages using Mirth Connect

如果你需要使用python,你可以查看HL7(http://hl7apy.org/)和FIHR(https://pypi.python.org/pypi/fhir/0.0.4)包。

为了使用python解析常规XML,这里描述了几种方法:How do I parse XML in Python?(我很喜欢beautifulsoup和lxml)。

希望能有所帮助。 祝你好运