2012-03-12 38 views
0

我有一個關於openxml sdk的基本問題。我想處理pptx文件。Openxml 2.0 xml處理

在我的slideMaster1.xml的c#代碼中,我想獲取節點類型爲p的每個XMLNode列表:cNvPr,因爲我想將它們的值存儲在字符串列表中。

我該怎麼做?

回答

0

Zoltan, 'p:cNvPr'節點是指定非視覺畫布屬性的非可視圖形屬性。有關更多詳細信息,請參見MSDN documentation

我寫了一個小窗口窗體應用程序,將打開一個電源點,並顯示所有所有使用SDK在主佈局的非可視圖紙屬性的名稱屬性。請參閱下面的屏幕截圖和link for zip of the Solution

enter image description here

的代碼基本上執行以下操作:

foreach (var slideMasterPart in PresentationPart.SlideMasterParts) 
{ 
    foreach (var layouts in slideMasterPart.SlideLayoutParts) 
    { 
    get each of the layouts.SlideLayout.CommonSlideData.ShapeTree.Descendants<NonVisualDrawingProperties>(); 
       and put the name attribute to the grid. 
    } 
} 
0

不確定,但我認爲LinqToXml可以處理沒有openxml。

string[] values = XElement.Load("slideMaster1.xml") 
         .Descendants("p:cNvPr") 
         .Select(x => (string)x) 
         .ToArray(); 

它可出現咳嗽的p:因爲我不知道它會如何處理的命名空間。如果你給你的xml樣本,我可以測試它。

+0

我不想解壓PPTX自己,因爲OPENXML確實對我來說(我知道,這聽起來愚蠢從我)和這就是爲什麼我寧願使用sdk來做它 – 2012-03-12 15:29:09