2016-07-07 40 views
0

我想解析多个XML文件到列/表,但一些XML有不同的数据,有些不重要,而其他数据是重要的。解析选择xml数据到列使用python

即(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,描述和名称是列名):

SETID

ABD6ECF0-DC8E

描述

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

Renese

回答

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)。

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