我想构建一个将xml转换为csv的工具。 我使用的是python,但如果更好的话,可以使用其他工具
这些xml并不总是遵循相同的模式,因此我需要自动将结构转换为csv。不总是知道树的结构。 主标记是已知的,并且总是相同的,一些xml可能使用所有的标记,而一些只使用很少的标记。 我尝试使用xml.etree并设法使用xml,但没有使用动态xml输入。 这可能吗
以下是我的xml输入文件内容示例:
<Process>
<ProcessName>Vault-2-A</ProcessName>
<ProcessEnabled>True</ProcessEnabled>
<ProcessType>N2N</ProcessType>
<NonDuplicationMethod>Delete</NonDuplicationMethod>
<OnFileExistsInDest>Overwrite</OnFileExistsInDest>
<ProcessScheduling>ExternalActivation</ProcessScheduling>
<ExternalActivationLevel>Process</ExternalActivationLevel>
<ProcessRecursive>True</ProcessRecursive>
<FileSelectionPattern>*</FileSelectionPattern>
<Rules>
<Rule1>
<RuleName>V2A</RuleName>
<SourcePort>
<Name>xxx</Name>
<Type>Vault</Type>
<VaultName>yyy</VaultName>
<UserName>user</UserName>
<FolderName>Root\</FolderName>
</SourcePort>
<DestPort>
<Name>MyFileSystem</Name>
<Type>FileSystem</Type>
<FolderName>D:\xxx\</FolderName>
</DestPort>
</Rule1>
<Rule2>
<RuleName>A2V</RuleName>
<SourcePort>
<Name>xxx</Name>
<Type>Vault</Type>
<VaultName>yyyn</VaultName>
<UserName>user</UserName>
<SafeName>userTest</SafeName>
<FolderName>Root\</FolderName>
</SourcePort>
<DestPort>
<Name>sftp</Name>
<Type>sftp</Type>
<FolderName>D:\Accellion Tests\DCA-IN</FolderName>
<ArchiveFolder>\arc</ArchiveFolder>
</DestPort>
</Rule2>
<Rule3>
<RuleName>Vault-2-Accellion</RuleName>
<NOND>true</NOND>
<SourcePort>
<Name>A</Name>
<Type>Vault</Type>
<VaultName>Am</VaultName>
<UserName>g</UserName>
<SafeName>test</SafeName>
<FolderName>Root\</FolderName>
</SourcePort>
<DestPort>
<Name>MyFileSystem</Name>
<Type>FileSystem</Type>
<FolderName>D:\Tests\DCA-IN</FolderName>
</DestPort>
</Rule3>
</Rules>
<UserExits>
</UserExits>
</Process>
谢谢 大卫
根据评论;您可以使用
xmltodict
将xml转换为字典。然后可以使用CSV
输出结果,使用DictWriter()
您需要考虑如何在CSV中显示数据。默认情况下
<Rules>
数据将作为命令在1个单元格中输出。您可能希望展平字典或允许重复数据例如:
相关问题 更多 >
编程相关推荐