我有以下 XML 结构,它是 xml 文档的一部分:
<p:sp xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
....
....
....
<p:txBody>
<a:bodyPr wrap="square" rtlCol="0" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"><a:noAutofit />
</a:bodyPr>
<a:lstStyle xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
<a:p xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
<a:endParaRPr lang="en-US" sz="1200" dirty="0">
<a:solidFill><a:schemeClr val="tx1" />
</a:solidFill>
<a:latin typeface="Verdana" pitchFamily="34" charset="0" />
<a:ea typeface="Verdana" pitchFamily="34" charset="0" />
<a:cs typeface="Verdana" pitchFamily="34" charset="0" /></a:endParaRPr>
</a:p>
</p:txBody>
</p:sp>
我想选择p:txBody并想在最后注入a:p,我正在使用以下代码,但我收到的txBody不是正确的,因为我猜它是从 doc 对象中提取的,而不是从形状对象:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("p", "http://schemas.openxmlformats.org/presentationml/2006/main");
XmlNode txBody = shape.SelectSingleNode("//p:txBody", nsmgr);
其中shape是具有上述 OuterXml 的 XMLNode 对象,并使用以下代码进行 xml 注入:
XmlDocumentFragment fragment = doc.CreateDocumentFragment();
string xml = "valid xml";
fragment.InnerXml = xml;
txBody.Append(fragment);
但注射的形状不正确。