【发布时间】:2012-03-12 13:00:15
【问题描述】:
我有一个关于 openxml sdk 的非常基本的问题。我要处理pptx文档。
在我来自 slideMaster1.xml 的 c# 代码中,我想获取节点类型为 p:cNvPr 的每个 XMLNode 的列表,因为我想将它们的值存储在字符串列表中。
我该怎么做?
【问题讨论】:
标签: c# openxml presentationml
我有一个关于 openxml sdk 的非常基本的问题。我要处理pptx文档。
在我来自 slideMaster1.xml 的 c# 代码中,我想获取节点类型为 p:cNvPr 的每个 XMLNode 的列表,因为我想将它们的值存储在字符串列表中。
我该怎么做?
【问题讨论】:
标签: c# openxml presentationml
佐尔坦, “p:cNvPr”节点是指定非可视画布属性的非可视绘图属性。有关详细信息,请参阅MSDN documentation。
我编写了一个小型 Windows 窗体应用程序,它将打开一个 power point 并使用 sdk 显示 Master 中所有布局的所有非可视绘图属性的名称属性。请参阅下面的屏幕截图和link for zip of the Solution。
代码基本上做了以下几点:
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.
}
}
【讨论】:
不确定,但我认为 LinqToXml 可以在没有 openxml 的情况下处理。
string[] values = XElement.Load("slideMaster1.xml")
.Descendants("p:cNvPr")
.Select(x => (string)x)
.ToArray();
它可能会在p: 上咳嗽,因为我不确定它会如何处理命名空间。如果你提供你的 xml 样本,我可以测试它。
【讨论】: