Как реализовать xsd: десятичный тип данных для почтового запроса XML - PullRequest
0 голосов
/ 10 марта 2020

Кажется, у меня возникают некоторые проблемы при загрузке некоторых данных, по какой-то причине система очень требовательна и требует от меня загрузки целых чисел для столбца 5 (значения строки [4]), поэтому я исследовал различные методы, включая переписывание весь документ xml с Beautiful Soup, однако, кажется, что наиболее эффективным способом было бы использовать тип xsd: decimal, но я немного новичок, когда дело касается схем.

Может кто-нибудь помочь ?

Мне просто нужно знать, куда поместить схему в строку xml

XML строку:

""<?xml version='1.0' encoding='UTF-8'?>

<call method="importStandardData" callerName="Import Call">
<importDataOptions planOrActuals="Actuals" allowParallel="false" moveBPtr="false" replaceExisting="true" 
useMappings="true" /><version name="Actuals" isDefault="False" />
<rowData><header>Account|Level|Split Label|Projects|{}</header><rows>"""
""

Код:

for index,x in df3.iterrows():    
#print("Account,Level,Split,Project,Date")
Main="""<row>{}|{}|{}|{}|{}")</row>""".format(x[0],x[1],x[2],x[3],x[4])
#print("This is Project: ",x[3])
Main_parts+=Main



xml=Start+Main_parts+End

def Upload(xml):
soup = BeautifulSoup(xml,"xml")
tree = ET.ElementTree(ET.fromstring(soup.prettify()))
xml2 = bytes(soup.prettify(), encoding = 'utf-8')
#print(xml)
root = etree.XML(xml2)

New_xml=tree
headers = {'Content-Type': 'application/xml'}

req=requests.post('https://api.System.com/api/v20',xml2,headers=headers)
return req.text

1 Ответ

0 голосов
/ 13 апреля 2020

Обновление: у меня есть решение, проблема была в этой строке кода xml2 = bytes (soup.prettify (), encoding = 'utf-8')) фактически он генерировал Html символов в конце каждой строки ie '/ n', поэтому для столбца Итого, поскольку он находился в конце строки, он каким-то образом соединил Итоги с версией * n XML, что означает, что это было '100.000 #xmlversionof / n', я запустил в другую проблему с использованием & в файле XML, но решил ее, выполнив str.replace ('&', '&') для всех значений в кадре данных, который использовался для генерации XML. Скоро выложу обновленный код.

...