如何通过元素路径检索特定的 openXML 元素 Word 文档
How to retrieve specific openXML element Word document by element path
我有 openXML 格式的元素路径,例如:
/w:document[1]/w:body[1]/w:p[1]
我需要从 WordprocessingDocument 中获取此元素作为 OpenXmlElement
像这样:
public OpenXmlElement GetElementByPath(WordprocessingDocument doc, string path)
{
// Some Logic
return element;
}
有人帮忙
使用 XPath 查询(与您已经编写的非常相似)。
使用 XmlDocument 加载文件并从文档(根)节点获取 XPathNavigator 实例。
这是我的代码示例:
using System.Xml;
using System.Xml.Linq;
using System.Xml.XPath;
public static List<XmlNode> queryXPath(this IXPathNavigable source, String xPath, XmlNamespaceManager nsManager = null)
{
XPathNavigator xNav = source.CreateNavigator();
if (nsManager == null) nsManager = new XmlNamespaceManager(xNav.NameTable);
List<XmlNode> output = new List<XmlNode>();
XPathExpression xExp = XPathExpression.Compile(xPath, nsManager);
XPathNodeIterator xIterator = xNav.Select(xExp);
while (xIterator.MoveNext())
{
XmlNode tmp = xIterator.Current.UnderlyingObject as XmlNode;
output.Add(tmp);
}
return output;
}
我有 openXML 格式的元素路径,例如:
/w:document[1]/w:body[1]/w:p[1]
我需要从 WordprocessingDocument 中获取此元素作为 OpenXmlElement
像这样:
public OpenXmlElement GetElementByPath(WordprocessingDocument doc, string path)
{
// Some Logic
return element;
}
有人帮忙
使用 XPath 查询(与您已经编写的非常相似)。
使用 XmlDocument 加载文件并从文档(根)节点获取 XPathNavigator 实例。
这是我的代码示例:
using System.Xml;
using System.Xml.Linq;
using System.Xml.XPath;
public static List<XmlNode> queryXPath(this IXPathNavigable source, String xPath, XmlNamespaceManager nsManager = null)
{
XPathNavigator xNav = source.CreateNavigator();
if (nsManager == null) nsManager = new XmlNamespaceManager(xNav.NameTable);
List<XmlNode> output = new List<XmlNode>();
XPathExpression xExp = XPathExpression.Compile(xPath, nsManager);
XPathNodeIterator xIterator = xNav.Select(xExp);
while (xIterator.MoveNext())
{
XmlNode tmp = xIterator.Current.UnderlyingObject as XmlNode;
output.Add(tmp);
}
return output;
}