У меня есть xml, сохраненный как CLOB в моей базе данных oracle:
<?xml version="1.0" encoding="UTF-8"?>
<DCResponse>
...
</DCResponse>
, и с этим кодом python я могу сохранять содержимое в xml файле:
sql = "select extract(xmltype.createxml(xml), '//DCResponse').getStringVal() from table t where id = 2"
for row in cursor.execute(sql):
print(row[0])
with open("output.xml", "w") as f:
f.write(row[0])
Вместо этого xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<PIPEDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:XML-PIPE
PIPEDocument.xsd" ReferenceNumber="567862650" CreationDate="20200115155255" Version="1.0"
xmlns="urn:XML-PIPE">
...
</PIPEDocument>
Я не могу извлечь содержимое с помощью python. Аргумент write () должен быть str, а не None ....., это приводит к тому, что консоль Python выполняет этот код:
sql = "select extract(xmltype.createxml(xml), '//PIPEDocument').getStringVal() from table t where id
= 7"
for row in cursor.execute(sql):
print(row[0])
with open("output.xml", "w") as f:
f.write(row[0])
В моем клиенте oracle выходные данные запроса sql ниже , используется в python, имеет значение null:
select extract(xmltype.createxml(xml), '//PIPEDocument').getStringVal() from table t where id = 7;
, в то время как содержимое xml присутствует в моей БД:
select xml from table where id =7
Не уверен, в чем проблема, может быть, ключевое слово «// PIPEDocument» в запросе выбора или другой кодировке между файлами 2 XML, но не знаю, как это исправить.
Пожалуйста, помогите с наилучшими пожеланиями Джанкарло