2017-09-27 89 views
-1

我想将XPS中的fpage元素的XML结构读取为Stream。C#从XPS流的fpage读取XML

因此进一步解释什么,我想做的事:

如果保存.XPS您可以将其重命名为一个zip压缩包,那么你可以例如读取xml
xps \ Documents \ 1 \ Pages \ 1.fpage

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

回答

0

所以,如果自己找到答案(如果你知道如何^^,那不是很难)。

您需要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 
    } 
}