C# 从 XPS 流的 fpage 读取 XML

C# Read XML from fpage of XPS stream

我想读取 XPS 中 fpage 元素的 XML 结构作为流。

所以进一步解释我想做什么:

如果您保存 .xps,您可以将其重命名为 zip 存档,然后您可以阅读 xml 例如
xps\Documents\Pages.fpage

现在我想在我的 C# 程序中读取这个 xml 结构。
因为保存到光盘、重命名、导航、提取、读取、删除不是一个好的选择,所以我的程序中已经有这个 xps 文件作为流可用。
所以问题是我如何从流中访问这个 XPS 结构并读取它的 xml?

所以如果我自己找到了答案(如果你知道怎么做就不难了^^)。

您需要 System.IO.Packaging.Package 和对 ReachFramework 的引用,然后创建一个新的 XpsDocument 并通过 XmlReader 您可以读取 XML 结构.

阅读第一页的小样本:

XpsDocument xpsFromStream = new XpsDocument(Package.Open(stream)); //ReachFramework
IXpsFixedDocumentSequenceReader fixedDocSeqReader = xpsFromStream.FixedDocumentSequenceReader;

if (fixedDocSeqReader != null)
{
    XmlReader pageContentReader = fixedDocSeqReader.FixedDocuments[0].FixedPages[0].XmlReader;
    //Sample:
    while (pageContentReader.Read())
    {
        if (pageContentReader.Name == "Path")
            //Do stuff
    } 
}