Я пытаюсь получить действительный печатный XML, чтобы передать его дальше requests
Тем не менее, XML «prettifyed» BeautifulSoup выглядит следующим образом:
...
<typ>
TYPE_1
</typ>
<rte>
AL38941XXXXX
</rte>
<sts>
ADDED
</sts>
...
Удобный способ справиться с таким беспорядочным выводом, описанным здесь
text_re = re.compile('>\n\s+([^<>\s].*?)\n\s+</', re.DOTALL)
prettyXml = text_re.sub('>\g<1></', uglyXml)
, что дает:
<typ>TYPE_1</typ>
<rte>AL38941XXXXX</rte>
<sts>ADDED</sts>
Однако, когда дело доходит до пустых значений, регулярное выражение просто пропускает их, что приводит к проблемам, когда некоторые значения в разобранной строке были пустыми.
Пример:
<typ>TYPE_1</typ>
<rte>AL38941XXXXX</rte>
<sts>ADDED</sts>
<ref>
</ref>
Затем requests
пытается выполнить запрос с параметром ' '
в пустом теге, что приводит к неверному результату запроса.
Я не очень хорошо разбираюсь в регулярных выражениях, поэтому попробовал >\n\s+</
в другом регулярном выражении, потерпел неудачу и взломал его так:
text_re = re.compile('>\n\s+([^<>\s].*?)\n\s+</', re.DOTALL)
prettyXml = text_re.sub('>\g<1></', uglyXml).replace('>\n ', '><').replace('>\n ', '><')
И вся "милая" разметка, к сожалению, исчезла ...
Это вроде работает, но как это сделать правильно?