首页 > 解决方案 > 获取 XML 中字段的值

问题描述

我有以下 XML(作为字符串)

xml = '''
<?xml version="1.0" encoding="utf-8"?>
<Response total="00:00:00.2130175">
  <Result>
    <Channel name="test">
      <TotalCount ignoringpaging="2">2</TotalCount>
      <Products>
        <Product id="8050" ecommerceproduct="Productname">
          <Fields>
            <Field name="pid">8050</Field>
            <Field name="ProductName">Productname</Field>
            <Field name="ProductCategorie" culture="nl-NL">Category</Field>
            <Field name="Titel" culture="nl-NL">Product Titel</Field>
            <Field name="ProductHoogte">74</Field>
            <Field name="ProductVerstelbaarheid">Vast</Field>
            <Field name="ProductDikte">25</Field>
            <Field name="ProductMateriaal">Gemelamineerd spaanplaat</Field>
            <Field name="ProductLijn">0</Field>
            <Field name="prodId">63258518</Field>
          </Fields>
          <Variants>
            <Variant id="8060" ecommerceproduct="Productname">
              <Fields>
                <Field name="ProductName">Productname / Black</Field>
                <Field name="PID">8060</Field>
                <Field name="Zichtbaar">Y</Field>
                <Field name="articleCode">123456</Field>
                <Field name="priceExcl">469</Field>
                <Field name="ProductBreedte">180</Field>
                <Field name="ProductDiepte">80</Field>
                <Field name="ProductHoogte">74</Field>
                <Field name="varId">121655579</Field>
                <Field name="visible">Y</Field>
              </Fields>
            </Variant>
          </Variants>
        </Product>
                <Product id="8051" ecommerceproduct="Productname 2">
          <Fields>
            <Field name="pid">8051</Field>
            <Field name="ProductName">Productname 2</Field>
            <Field name="ProductCategorie" culture="nl-NL">Category</Field>
            <Field name="Titel" culture="nl-NL">Product Titel 2</Field>
            <Field name="ProductHoogte">74</Field>
            <Field name="ProductVerstelbaarheid">Vast</Field>
            <Field name="ProductDikte">25</Field>
            <Field name="ProductMateriaal">Gemelamineerd spaanplaat</Field>
            <Field name="ProductLijn">0</Field>
            <Field name="prodId">63258520</Field>
          </Fields>
          <Variants>
            <Variant id="8061" ecommerceproduct="Productname 2">
              <Fields>
                <Field name="ProductName">Productname 2 / White</Field>
                <Field name="PID">8061</Field>
                <Field name="Zichtbaar">Y</Field>
                <Field name="articleCode">234567</Field>
                <Field name="priceExcl">499</Field>
                <Field name="ProductBreedte">180</Field>
                <Field name="ProductDiepte">80</Field>
                <Field name="ProductHoogte">74</Field>
                <Field name="varId">216555798</Field>
                <Field name="visible">N</Field>
              </Fields>
            </Variant>
          </Variants>
        </Product>
      </Products>
    </Channel>
  </Result>
</Response>'''

使用 xml.etree 我可以遍历产品,但如何获取字段和变量字段的所有值。

  root = ET.fromstring(xml)
  
  for p in root.iter('Product'):
    print(p.attrib)

我得到的输出是: {'id': '8050', 'ecommerceproduct': 'Productname'} {'id': '8060', 'ecommerceproduct': 'Productname 2'}

所以这似乎可行,但无论我试图从字段中获取值,我都没有得到回应。

标签: python-3.xxml.etree

解决方案


推荐阅读