Разбор XML с помощью Python Multirow - PullRequest
0 голосов
/ 16 октября 2018

Я не могу разобрать этот тип xml-файла:

<items>
  <item>
   <name>Car</name>
   <description>
      <specification>
          <color>blue</color>
      </specification>
      <specification>
          <color>yellow</color>
      </specification>
   </description>
  <item>
 <items>

Мне хотелось бы восстановить все цвета, разделенные запятыми.

Я новичок в python.

items = doc.getElementsByTagName("items")
for item in items:
   name = item.getAttribute("name")
   color = item.getElementByTagName("color")[0]
   print(name,color.firstChild.data)

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Спасибо!Это работает для этого случая, но для большей выборки я не могу сделать это ..

<TradeMark>
   <MarkImageDetails>
      <MarkImage>
         <MarkImageFilename>FMARK0000000004393852</MarkImageFilename>
         <MarkImageFileFormat>TIFF</MarkImageFileFormat>
      </MarkImage>
   </MarkImageDetails>
   <GoodsServicesDetails>
      <GoodsServices>
         <ClassificationKindCode>Nice</ClassificationKindCode>
         <ClassDescriptionDetails>
            <ClassDescription>
               <ClassNumber>35</ClassNumber>
            </ClassDescription>
            <ClassDescription>
               <ClassNumber>41</ClassNumber>
            </ClassDescription>
            <ClassDescription>
               <ClassNumber>42</ClassNumber>
            </ClassDescription>
         </ClassDescriptionDetails>
      </GoodsServices>
   </GoodsServicesDetails>
</TradeMark>

Я хотел бы это с ClassNumber.

0 голосов
/ 16 октября 2018

Я буду рекомендовать BeautifulSoup

from bs4 import BeautifulSoup
a='''<items>
  <item>
   <name>Car</name>
   <description>
      <specification>
          <color>blue</color>
      </specification>
      <specification>
          <color>yellow</color>
      </specification>
   </description>
  <item>
 <items>'''
color_list=[]
soup = BeautifulSoup(a, "html.parser")
for i in soup.findAll('color'):
    color_list.append(i.next_element)
print(','.join(color_list)) # blue,yellow
...