我对python 3很陌生,我试图将一个XML文件分割成多个有效的XML文件,并为每个文件复制头部(第一个
输入示例:
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.namespacedbchangelog" xmlns:ext="http://www.namespace-ext" xmlns:xsi="http://namespaceXMLSchema-instance" xsi:schemaLocation="http://www.namespacedbchangelog-ext http://www.namespacedbchangelog-ext.xsd http://www.namespacedbchangelog http://www.namespacedbchangelog/dbchangel.xsd">
<changeSet author="oracle (generated)" id="1594342324345277">
<createView fullDefinition="true" viewName="VIEW1">
CONTENTS OF THE VIEW
</createView>
</changeSet>
<changeSet author="oracle (generated)" id="159423231995822477">
<createTable tableName="TEST1">
CONTENTS OF THE TABLE
</createTable>
</changeSet>
<changeSet author="oracle (generated)" id="1534129423123477">
<createTable tableName="TEST2">
CONTENTS OF THE TABLE
</createTable>
</changeSet>
</databaseChangeLog>
输出1文件名: 1594342324345277-createView-VIEW1.xml
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.namespacedbchangelog" xmlns:ext="http://www.namespace-ext" xmlns:xsi="http://namespaceXMLSchema-instance" xsi:schemaLocation="http://www.namespacedbchangelog-ext http://www.namespacedbchangelog-ext.xsd http://www.namespacedbchangelog http://www.namespacedbchangelog/dbchangel.xsd">
<changeSet author="oracle (generated)" id="1594342324345277">
<createView fullDefinition="true" viewName="VIEW1">
CONTENTS OF THE VIEW
</createView>
</changeSet>
</databaseChangeLog>
输出2文件名: 159423231995822477-createTable-TEST1.xml
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.namespacedbchangelog" xmlns:ext="http://www.namespace-ext" xmlns:xsi="http://namespaceXMLSchema-instance" xsi:schemaLocation="http://www.namespacedbchangelog-ext http://www.namespacedbchangelog-ext.xsd http://www.namespacedbchangelog http://www.namespacedbchangelog/dbchangel.xsd">
<changeSet author="oracle (generated)" id="159423231995822477">
<createTable tableName="TEST1">
CONTENTS OF THE TABLE
</createTable>
</changeSet>
</databaseChangeLog>
输出3:文件名: 1534129423123477-createTable-TEST2.xml
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.namespacedbchangelog" xmlns:ext="http://www.namespace-ext" xmlns:xsi="http://namespaceXMLSchema-instance" xsi:schemaLocation="http://www.namespacedbchangelog-ext http://www.namespacedbchangelog-ext.xsd http://www.namespacedbchangelog http://www.namespacedbchangelog/dbchangel.xsd">
<changeSet author="oracle (generated)" id="1534129423123477">
<createTable tableName="TEST2">
CONTENTS OF THE TABLE
</createTable>
</changeSet>
</databaseChangeLog>
谢谢你!!
发布于 2020-08-07 00:02:38
这里有个解决办法。
from simplified_scrapy import SimplifiedDoc, utils, req
xml = '''
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.namespacedbchangelog" xmlns:ext="http://www.namespace-ext" xmlns:xsi="http://namespaceXMLSchema-instance" xsi:schemaLocation="http://www.namespacedbchangelog-ext http://www.namespacedbchangelog-ext.xsd http://www.namespacedbchangelog http://www.namespacedbchangelog/dbchangel.xsd">
<changeSet author="oracle (generated)" id="1594342324345277">
<createView fullDefinition="true" viewName="VIEW1">
CONTENTS OF THE VIEW
</createView>
</changeSet>
<changeSet author="oracle (generated)" id="159423231995822477">
<createTable tableName="TEST1">
CONTENTS OF THE TABLE
</createTable>
</changeSet>
<changeSet author="oracle (generated)" id="1534129423123477">
<createTable tableName="TEST2">
CONTENTS OF THE TABLE
</createTable>
</changeSet>
</databaseChangeLog>
'''
doc = SimplifiedDoc(xml)
databaseChangeLog = doc.databaseChangeLog # Get root node
changeSets = databaseChangeLog.selects('changeSet')
for changeSet in changeSets:
child = changeSet.child # Get the child node
fileName = "{0}-{1}-{2}.xml".format(changeSet.id, child.tag,
child['viewName'] or child['tableName'])
databaseChangeLog.setContent(changeSet) # Replace node
utils.saveFile(fileName, doc.html) # Save file
print (fileName)Reslut:
1594342324345277-createView-VIEW1.xml
159423231995822477-createTable-TEST1.xml
1534129423123477-createTable-TEST2.xml下面是更多的示例:https://github.com/yiyedata/simplified-scrapy-demo/tree/master/doc_examples
https://stackoverflow.com/questions/63162600
复制相似问题