【问题标题】:LXML querying word document.xml.relsLXML查询word document.xml.rels
【发布时间】:2023-01-10 01:44:11
【问题描述】:

我正在尝试检索 /word/_rels/document.xml.rels 文件中的特定关系标记。如果使用 zip 程序打开,此文件位于 docx 中。

这是 rels 文件的内容:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
    <Relationship Id="rId8" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes" Target="footnotes.xml"/>
    <Relationship Id="rId13" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer" Target="footer2.xml"/>
    <Relationship Id="rId18" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/header" Target="header5.xml"/>
    <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml" Target="../customXml/item2.xml"/>
    <Relationship Id="rId21" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/>
    <Relationship Id="rId7" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings" Target="webSettings.xml"/>
    <Relationship Id="rId12" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer" Target="footer1.xml"/>
    <Relationship Id="rId17" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/header" Target="header4.xml"/>
    <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml" Target="../customXml/item1.xml"/>
    <Relationship Id="rId16" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/image1.PNG"/>
    <Relationship Id="rId20" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable" Target="fontTable.xml"/>
    <Relationship Id="rId1" Type="http://schemas.microsoft.com/office/2006/relationships/keyMapCustomizations" Target="customizations.xml"/>
    <Relationship Id="rId6" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings" Target="settings.xml"/>
    <Relationship Id="rId11" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/header" Target="header2.xml"/>
    <Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>
    <Relationship Id="rId15" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer" Target="footer3.xml"/>
    <Relationship Id="rId10" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/header" Target="header1.xml"/>
    <Relationship Id="rId19" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer" Target="footer4.xml"/>
    <Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering" Target="numbering.xml"/>
    <Relationship Id="rId9" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes" Target="endnotes.xml"/>
    <Relationship Id="rId14" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/header" Target="header3.xml"/>
</Relationships>

这是我正在使用的 python 代码:

sourceXmlDoc = etree.parse(DOCUMENT_XML_PATH)

# open the document.xml.rels file
documentRelation = etree.parse(DOC_XML_RELS_PATH)

results = documentRelation.findall('//Relationship')

不过,返回的结果列表的长度为 0。

【问题讨论】:

  • 有一个默认命名空间。它应该与documentRelation.findall('//{http://schemas.openxmlformats.org/package/2006/relationships}Relationship')documentRelation.findall('//{*}Relationship') 一起使用。
  • 哦谢谢!!!包括名称空间有效!
  • 或者 documentRelation.findall('//doc:Relationship', namespaces={'doc': 'http://schemas.openxmlformats.org/package/2006/relationships'}) 并使用 lxmlfindall 替换为 xpath 并运行任何复杂的 XPath 1.0 查询。

标签: python xml lxml


【解决方案1】:

如果有人来到这里寻找这个确切问题的答案,除了使用PHP, 这是一个解决方案:

$xpath->registerNameSpace('default','http://schemas.openxmlformats.org/package/2006/relationships');
$doc_nodes = $xpath->query( "//any_namespace_name:Relationship" );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多