我有三个XML文件,如下所示:
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default ContentType="application/xml" Extension="xml"/>
<Default ContentType="image/png" Extension="png"/>
<Default ContentType="application/vnd.openxmlformats-package.relationships+xml" Extension="rels"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml" PartName="/word/settings.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml" PartName="/word/styles.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml" PartName="/word/footer1.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml" PartName="/word/fontTable.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml" PartName="/word/numbering.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml" PartName="/word/document.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml" PartName="/word/header1.xml"/>
</Types>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default ContentType="application/xml" Extension="xml"/>
<Default ContentType="application/vnd.openxmlformats-package.relationships+xml" Extension="rels"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml" PartName="/word/settings.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml" PartName="/word/styles.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml" PartName="/word/fontTable.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml" PartName="/word/numbering.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml" PartName="/word/document.xml"/>
</Types>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default ContentType="image/jpeg" Extension="jpg"/>
<Default ContentType="application/xml" Extension="xml"/>
<Default ContentType="image/png" Extension="png"/>
<Default ContentType="application/vnd.openxmlformats-package.relationships+xml" Extension="rels"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml" PartName="/word/settings.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml" PartName="/word/styles.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml" PartName="/word/fontTable.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml" PartName="/word/numbering.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml" PartName="/word/document.xml"/>
</Types>
我想在不重复内容的情况下合并它们,以便最终结果看起来像这样:
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default ContentType="application/xml" Extension="xml"/>
<Default ContentType="image/png" Extension="png"/>
<Default ContentType="image/jpeg" Extension="jpg"/>
<Default ContentType="application/vnd.openxmlformats-package.relationships+xml" Extension="rels"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml" PartName="/word/settings.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml" PartName="/word/styles.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml" PartName="/word/footer1.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml" PartName="/word/fontTable.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml" PartName="/word/numbering.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml" PartName="/word/document.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml" PartName="/word/header1.xml"/>
</Types>
我正在使用Nokogiri,但直到现在我才能找到如何向XML添加新节点。我也想检查一下是否有重复。关于如何做到这一点的任何想法?
当我尝试将其转换为哈希然后将其转换回XML时,属性以单独的标记的形式返回。合并哈希值然后将最终哈希值转换回XML将不会以相同的格式生成输出。
如果我使用以下方法将第一个XML转换为哈希并返回XML:
h = Hash.from_xml(xml_string.gsub("\n", ""))
h.to_xml
返回此结果:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<hash>
<Types>
<xmlns>http://schemas.openxmlformats.org/package/2006/content-types</xmlns>
<Default type=\"array\">
<Default>
<ContentType>application/xml</ContentType>
<Extension>xml</Extension>
</Default>
<Default>
<ContentType>image/png</ContentType>
<Extension>png</Extension>
</Default>
<Default>
<ContentType>application/vnd.openxmlformats-package.relationships+xml</ContentType>
<Extension>rels</Extension>
</Default>
</Default>
<Override type=\"array\">
<Override>
<ContentType>application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml</ContentType>
<PartName>/word/settings.xml</PartName>
</Override>
<Override>
<ContentType>application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml</ContentType>
<PartName>/word/styles.xml</PartName>
</Override>
<Override>
<ContentType>application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml</ContentType>
<PartName>/word/footer1.xml</PartName>
</Override>
<Override>
<ContentType>application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml</ContentType>
<PartName>/word/fontTable.xml</PartName>
</Override>
<Override>
<ContentType>application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml</ContentType>
<PartName>/word/numbering.xml</PartName>
</Override>
<Override>
<ContentType>application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml</ContentType>
<PartName>/word/document.xml</PartName>
</Override>
<Override>
<ContentType>application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml</ContentType>
<PartName>/word/header1.xml</PartName>
</Override>
</Override>
</Types>
</hash>