首页 > 解决方案 > 如何根据标签的属性解析 3.5GB 的 XML 文件?

问题描述

我想在 python 中解析这个 XML。我只想找到特定标签的属性。

<managedObject class="XXX" version="XXX18" distName="XXX-RC8/XXX-212404" id="142022">

如果我有上面这样的标签。我必须仅根据版本、类、distname 或 id 查找所有条目。

目前我正在使用:

etree.XPath("child::Title[contains(text(), 'managedObject')]")`  

这不适用于当前文件,因为标签有很多属性。文件内容如下所示。我需要一个优化的解决方案来读取一个不占用太多 RAM 的 3GB 文件。

<managedObject class="XXX" version="XXX18" distName="XXX-RC8/XXX-212404" id="142022">
      <list name="Options">
        <p>0</p>
        <p>1</p>
        <p>2</p>
        <p>3</p>
        <p>6</p>
        <p>7</p>
        <p>8</p>
        <p>9</p>
        <p>10</p>
        <p>11</p>
        <p>12</p>
        <p>13</p>
        <p>14</p>
        <p>15</p>
        <p>18</p>
        </list>
      <p name="SomeOption1">12</p>
      <p name="SomeOption2">4</p>
      <p name="SomeOption3">2</p>
      <p name="SomeOption4">0</p>
      <p name="SomeOption1">12</p>
      <p name="SomeOption2">4</p>
      <p name="SomeOption3">2</p>
      <p name="SomeOption4">0</p>
      <p name="OtherOption">12</p>
      <p name="XOtherOption2">4</p>
      <p name="XOtherOption3">2</p>
      <p name="XOtherOption4">0</p>
      <p name="XXXOtherOption1">12</p>
      <p name="XXXOtherOption2">4</p>
      <p name="XXXOtherOption3">2</p>
      <p name="XXXOtherOption4">0</p>
      <p name="YYYYXXXOtherOption1">12</p>
      <p name="YYYYXXXOtherOption2">4</p>
      <p name="YYYYXXXOtherOption3">2</p>
      <p name="YYYYXXXOtherOption4">0</p>
</managedObject>

标签: pythonxpathxml-parsinglxmlelementtree

解决方案


推荐阅读