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
}
}
我想读取 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
}
}