У меня есть XML-дерево в виде строки.Я хочу вставить это дерево в другой тег внутри объекта Beautifulsoup.
Я хочу вставить строку stra
внутри тега <voucher action="Create" objview="Accounting Voucher View" vchtype="Journal">
.
В исходном файле ничего нет внутритег ваучера.
Код:
from bs4 import BeautifulSoup as bs
stra = r'''<DATE>20190101</DATE>
<VOUCHERTYPENAME>Journal</VOUCHERTYPENAME>
<VOUCHERNUMBER>5</VOUCHERNUMBER>
<PERSISTEDVIEW>Accounting Voucher View</PERSISTEDVIEW>
<EFFECTIVEDATE>20190101</EFFECTIVEDATE>
<MASTERID> 1</MASTERID>
<ALLLEDGERENTRIES.LIST>
<LEDGERNAME>Salary Payable</LEDGERNAME>
<ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
<AMOUNT>1000.00</AMOUNT>
<VATEXPAMOUNT>1000.00</VATEXPAMOUNT>
</ALLLEDGERENTRIES.LIST>'''
newsoup=bs(stra)
f = open(r"F:\Users\Administrator\Desktop\TallyJVXml.txt").read()
soup = bs(f,'lxml')
l = soup.find("voucher".lower())
l.append(stra)
print(soup)
Токовый выход:
<html><body><envelope>
<header>
<tallyrequest>Import Data</tallyrequest>
</header>
<importdata>
<requestdesc>
<reportname>Vouchers</reportname>
<staticvariables>
<svcurrentcompany>SOAC</svcurrentcompany>
</staticvariables>
</requestdesc>
<requestdata>
<tallymessage xmlns:udf="TallyUDF">
<voucher action="Create" objview="Accounting Voucher View" vchtype="Journal">
<DATE>20190101</DATE>
<VOUCHERTYPENAME>Journal</VOUCHERTYPENAME>
<VOUCHERNUMBER>5</VOUCHERNUMBER>
<PERSISTEDVIEW>Accounting Voucher View</PERSISTEDVIEW>
<EFFECTIVEDATE>20190101</EFFECTIVEDATE>
<MASTERID> 1</MASTERID>
<ALLLEDGERENTRIES.LIST>
<LEDGERNAME>Salary Payable</LEDGERNAME>
<ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
<AMOUNT>1000.00</AMOUNT>
<VATEXPAMOUNT>1000.00</VATEXPAMOUNT>
</ALLLEDGERENTRIES.LIST></voucher>
</tallymessage>
</requestdata>
</importdata>
</envelope>
</body></html>
Требуемый выход:
<ENVELOPE>
<HEADER>
<TALLYREQUEST>Import Data</TALLYREQUEST>
</HEADER>
<BODY>
<IMPORTDATA>
<REQUESTDESC>
<REPORTNAME>Vouchers</REPORTNAME>
<STATICVARIABLES>
<SVCURRENTCOMPANY>SOAC</SVCURRENTCOMPANY>
</STATICVARIABLES>
</REQUESTDESC>
<REQUESTDATA>
<TALLYMESSAGE xmlns:UDF="TallyUDF">
<VOUCHER VCHTYPE="Journal" ACTION="Create" OBJVIEW="Accounting Voucher View">
<DATE>20190101</DATE>
<VOUCHERTYPENAME>Journal</VOUCHERTYPENAME>
<VOUCHERNUMBER>5</VOUCHERNUMBER>
<PERSISTEDVIEW>Accounting Voucher View</PERSISTEDVIEW>
<EFFECTIVEDATE>20190101</EFFECTIVEDATE>
<MASTERID> 1</MASTERID>
<ALLLEDGERENTRIES.LIST>
<LEDGERNAME>Basic Salary</LEDGERNAME>
<ISDEEMEDPOSITIVE>Yes</ISDEEMEDPOSITIVE>
<AMOUNT>-1000.00</AMOUNT>
<VATEXPAMOUNT>-1000.00</VATEXPAMOUNT>
<CATEGORYALLOCATIONS.LIST>
<CATEGORY>Primary Cost Category</CATEGORY>
<COSTCENTREALLOCATIONS.LIST>
<NAME>Shoeb</NAME>
<AMOUNT>-1000.00</AMOUNT>
</COSTCENTREALLOCATIONS.LIST>
</CATEGORYALLOCATIONS.LIST>
</ALLLEDGERENTRIES.LIST>
<ALLLEDGERENTRIES.LIST>
<LEDGERNAME>Salary Payable</LEDGERNAME>
<ISDEEMEDPOSITIVE>No</ISDEEMEDPOSITIVE>
<AMOUNT>1000.00</AMOUNT>
<VATEXPAMOUNT>1000.00</VATEXPAMOUNT>
</ALLLEDGERENTRIES.LIST>
</VOUCHER>
</TALLYMESSAGE>
</REQUESTDATA>
</IMPORTDATA>
</BODY>
</ENVELOPE>
Как мне изменить мойкод для достижения этого?
Любые предложения приветствуются.Благодаря.