2012-10-14 61 views
1

可能重复:
How Can I Check That A File Is A Valid XPS File With C#?识别XPS文件

如何识别XPS文件,如果我过流或不带扩展名的文件?我知道XPS文件是zip文件,所以我可以在开始时查找ZIP幻数,但我如何识别XPS文件?

从我已经完成的研究中,我认为我需要提取并查看[Content_Types] .xml,但它不是(太)显而易见我需要查找的内容。

+0

通常,检查这个的一种方法是分析头和第一个HEX值。 – user1717079

+0

xps文件是包含特定内容的zip文件。所以我可以检查一个zip签名,但我的问题是我在内容中寻找什么。 – making

回答

2

我认为在大多数情况下,您只需检查[Content_Types].xml即可。有人可能会向您传递一个zip文件,其中包含一个类似这样的文件,但不包含您希望它作为XPS文档一部分提供的信息,但这有多可能?文件名非常具体,对我来说,不太可能产生意外碰撞。

但是,如果你想额外确定,你可以检查XML文件是否符合预期的模式。通常,您应该看到这样的事情:

<?xml version="1.0" encoding="utf-8"?> 
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"> 
    <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/> 
    <Default Extension="fdseq" ContentType="application/vnd.ms-package.xps-fixeddocumentsequence+xml"/> 
    <Default Extension="fdoc" ContentType="application/vnd.ms-package.xps-fixeddocument+xml"/> 
    <Default Extension="xml" ContentType="application/vnd.ms-printing.printticket+xml"/> 
    <Default Extension="JPG" ContentType="image/jpeg"/> 
    <Default Extension="fpage" ContentType="application/vnd.ms-package.xps-fixedpage+xml"/> 
    <Default Extension="dict" ContentType="application/vnd.ms-package.xps-resourcedictionary+xml"/> 
</Types> 

你也可以检查所需的文件FixedDocumentSequence.fdseq

希望有用/相关链接:

+0

将尝试fdseq,但是当我稍后靠近我的电脑。我不能检查内容类型,因为xps与ms office XML格式共享其文件格式,因此它们都具有内容类型文件。如果内容类型,我还会继续研究内容。 – making