无法打开手动创建的OpenXML docx文件

时间:2017-01-05 12:52:14

标签: openxml openxml-sdk

我一直在阅读Wouter van Vugt撰写的“Open XML。标记解释”。 “Wordprocessing ML”一章包含相当简单的手动创建简单docx文件的演练,方法是创建几个xml零件文件,将其压缩并重命名为* .docx。 我已经准确地遵循了说明,但是当我尝试使用Open XML SDK Productivity Tool打开final * .zip文件时,我遇到了一个错误:“无法打开文件:不支持指定的文件类型”。
我尝试使用MS Word创建一个docx文件,将其重命名为* .zip并使用Productivity Tool打开它。有效。此文件中有更多部件,然后手动创建,但描述部分几乎相同。 我做错了什么?
P.S。:是的,我知道OOXML应该通过一些与.NET兼容的代码创建,而不是通过手动创建XML内容。但是我试图理解它的结构,我不明白它。

创建文件的内容:

[内容类型]的.xml:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
    <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />
    <Default Extension="xml" ContentType="application/xml" />
    <Override PartName="/Document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.mainxml" />
</Types>

document.xml中:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
    <w:body>
        <w:p>
            <w:r>
                <w:t>Hello World!</w:t>
            </w:r>
        </w:p>
    </w:body>
</w:document>

的.rels:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
    <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="Document.xml" />
</Relationships>

1 个答案:

答案 0 :(得分:0)

假设文件结构如下:

_rels
    .rels
[Content_Types].xml
Document.xml

然后它可能只是一个缺失的&#39; +&#39;在最后一个&#39; ContentType&#39;在[Content_Types] .xml:

<Override PartName="/Document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml" />

(使用&#39; main + xml &#39;而不是&#39; mainxml &#39;)。