Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 02.12.2021
Сообщений: 21

Ошибка в записи xml файла

06.12.2022, 22:18. Показов 771. Ответов 0

Студворк — интернет-сервис помощи студентам
Здравствуйте, мне нужно считать xml файл old.xml и записать его в new.xml.
Файл old.xml:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<shop>
    <providers code="1" provider="A. P. Adams" title="Vedro. pro" adres ="Delaware Avenue, 86a"/>
    <providers code="2" provider="A. R. Brown" title="Check" adres ="Lark Street, 79b"/>
    <providers code="3" provider="H. H. Green" title="AUTO" adres ="Manning Boulevard, 26a"/>
 
 
    <parts code="1" title="Glass" articule="7807" price="3500" note="warranty 3y"/>
    <parts code="2" title="Wheel" articule="50423" price="2000" note="warranty 5y"/>
    <parts code="3" title="Spark plug" articule="52888" price="500" note="warranty 1y"/>
 
 
    <deliveries code="1" quantity="900" date="01.05.2022" providers="1" parts="1"/>
    <deliveries code="2" quantity="200" date="11.10.2022" providers="2" parts="2"/>
    <deliveries code="3" quantity="90" date="04.01.2023" providers="3" parts="3"/>
 
</shop>
Я реализовала 3 класса: providers, parts, deliveries.
Причем 2 поля класса deliveries - это объекты классов providers и parts.

Когда я запускаю следующий код, то в 81 строке мне компилятор сообщает об ошибке:
'str' object has no attribute 'getCode'

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import os,xml.dom.minidom
from data import data
 
class dataxml(data):
    def read(self):
        dom=xml.dom.minidom.parse(self.getInp())
        dom.normalize()
        for node in dom.childNodes[0].childNodes:
            if (node.nodeType==node.ELEMENT_NODE)and(node.nodeName=='providers'):
                code,provider,title,adres,telephone=0,"","","",""
                for t in node.attributes.items():
                    if t[0]=="code":code=int(t[1])
                    if t[0]=="provider":provider=t[1]
                    if t[0]=="title":title=t[1]
                    if t[0]=="adres":adres=t[1]
                    if t[0]=="telephone":telephone=t[1]
                self.getLib().createProviders(code,provider,title,adres,telephone)
            
            if (node.nodeType==node.ELEMENT_NODE)and(node.nodeName=='parts'):
                code,title,articule,price,note=0,"",0,0,""
                for t in node.attributes.items():
                    if t[0]=="code":code=int(t[1])
                    if t[0]=="title":title=t[1]
                    if t[0]=="articule":articule=int(t[1])
                    if t[0]=="price":price=int(t[1])
                    if t[0]=="note":note=t[1]
                self.getLib().createParts(code, title, articule, price, note)
            
            if (node.nodeType==node.ELEMENT_NODE)and(node.nodeName=='deliveries'):
                code,providers,parts,guantity,date=0,None,None,0,""
                for t in node.attributes.items():
                    if t[0]=="code":code=int(t[1])
                    if t[0]=="guantity":guantity=int(t[1])                     
                    if t[0]=="providers":
                        providers=self.getLib().getProviders(int(t[1]))
                    if t[0]=="parts":
                        parts=self.getLib().getParts(int(t[1]))
                    if t[0]=="date":date=t[1]
                self.getLib().createDeliveries(code,providers,parts,guantity,date)
                 
                     
 
    def write(self):
        dom=xml.dom.minidom.Document()
        root=dom.createElement("shop")
        dom.appendChild(root)
    
        for a in self.getLib().getProvidersList():
            pro=dom.createElement("providers")
            pro.setAttribute('code',str(a.getCode()))
            pro.setAttribute('provider',a.getProvider())
            pro.setAttribute('title',a.getTitle())
            pro.setAttribute('adres',a.getAdres())
            pro.setAttribute('telephone',a.getTelephone())
            root.appendChild(pro)
        
        for p in self.getLib().getPartsList():
            par=dom.createElement("parts")
            par.setAttribute('code',str(p.getCode()))
            par.setAttribute('title',p.getTitle())
            par.setAttribute('articule',str(p.getArticule()))
            par.setAttribute('price',str(p.getPrice()))
            par.setAttribute('note',p.getNote())
            root.appendChild(par)
        
        for b in self.getLib().getDeliveriesList():
            de=dom.createElement("deliveries")
            de.setAttribute('code',str(b.getCode()))
            de.setAttribute('guantity',str(b.getGuantity()))
            de.setAttribute('date',b.getDate())
            #de.setAttribute('providers',b.getProviders())
            #de.setAttribute('parts',b.getParts())            
            
            if b.getProviders():
                pc=b.getProviders().getCode()
            else:pc=""
            de.setAttribute('providers',str(pc))
 
            
            if b.getParts():
                ppc=b.getParts().getCode()          #'str' object has no attribute 'getCode'
            else:ppc=""
            de.setAttribute('parts',str(ppc))
                      
            root.appendChild(de)
            
 
        
        f = open(self.getOut(),"w")
        #f.write(dom.toprettyxml(encoding='utf-8'))
        f.write(dom.toprettyxml())
(реализую это через файл main:
Python
1
2
3
4
5
6
7
from shop import shop
from dataxml import dataxml
 
shop1=shop()
dat1=dataxml(shop1,'old.xml','new.xml')
dat1.read()
dat1.write()
)


Когда я закомменчиваю следующую часть кода dataxml (79-86 строки):
Python
1
2
3
4
5
6
7
8
'''
            if b.getParts():
                ppc=b.getParts().getCode()          #'str' object has no attribute 'getCode'
            else:ppc=""
            de.setAttribute('parts',str(ppc))
                      
            root.appendChild(de)
            '''
Программа выполняется, но в new.xml выводится только это (последние 3 строки new.xml не выводятся):
XML
1
2
3
4
5
6
7
8
9
<?xml version="1.0" ?>
<shop>
    <providers code="1" provider="A. P. Adams" title="Vedro. pro" adres="Delaware Avenue, 86a" telephone=""/>
    <providers code="2" provider="A. R. Brown" title="Check" adres="Lark Street, 79b" telephone=""/>
    <providers code="3" provider="H. H. Green" title="AUTO" adres="Manning Boulevard, 26a" telephone=""/>
    <parts code="1" title="Glass" articule="7807" price="3500" note="warranty 3y"/>
    <parts code="2" title="Wheel" articule="50423" price="2000" note="warranty 5y"/>
    <parts code="3" title="Spark plug" articule="52888" price="500" note="warranty 1y"/>
</shop>

Не понимаю как исправить эту ошибку.
Дайте пожалуйста какую-нибудь наводку.
Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.12.2022, 22:18
Ответы с готовыми решениями:

Ошибка записи xml файла
у меня есть xml файл: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;options&gt; &lt;directory&gt;значение&lt;/directory&gt; &lt;/options&gt; я его...

Редактирование записи из xml файла
скажите пожалуйста как вызвать форму с данными из xml файла для редактирования, заранее благодарен

Удаление записи из XML файла
Проблема банальная: как сделать удаление записи??? Как то сформироват ьссылку на удаление, будет что-то типа админки, где администратор...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.12.2022, 22:18
Помогаю со студенческими работами здесь

Ошибка записи XML
Подскажите что не так не записывает ни дату ни square пишет ошибка 3 строки xml на дату ругается public void saveFileXML(string...

Ошибка записи *.xmcd (при успешной записи того-же файла в *.mcd)
День добрый, уважаемые. Ситуация следующая: маткад 15 М020, имеется файл (в приложении), который при попытке записи в формат xmcd выдает...

Ошибка при записи в xml файл
Доброго времени суток. Есть код, который я подсмотрел в одном видео, и если его запустить без записи в xml файл, то все проходит хорошо и в...

Задание кодировки XML-файла при записи на диск
Подскажите, как при записи объекта DataSet на диск при помощи метода DataSet.WriteXml задать кодировку данных в XML-файле, например Win1251?

Ошибка при считывании с XML и записи в TextEdit
Здраствуйте, Андроид только начал изучать. Он мне нужен для дипломной работы. А именно написать приложение которое предназначено для игры в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru