У меня есть класс с именем Reader
public class Reader
Вот конструктор
public Reader(string fileName)
{
using (Package package = Package.Open(AppDomain.CurrentDomain.BaseDirectory + "\\" + fileName + ".docx"))
{
Document = new XmlDocument();
Document.Load(package.GetPart(new Uri("/word/document.xml", UriKind.Relative)).GetStream());
xmlNamespaceManager = new XmlNamespaceManager(Document.NameTable);
xmlNamespaceManager.AddNamespace("w", @"http://schemas.microsoft.com/office/word/2006/wordml");
}
}
Существует также открытый метод ReadTextNodes, который я настроил для тестирования.
public void ReadTextNodes()
{
var nodes = Document.SelectNodes("//w:t", xmlNamespaceManager);
Console.WriteLine(nodes.Count);
foreach (XmlNode node in nodes)
{
Console.WriteLine(node.InnerText);
}
}
Я использовал Xpath "// w: t" - я связал это с пространством имен XML "w", используемым Word ("http://schemas.microsoft.com/office/word/2006/wordml")
Тем не менее, этот запрос дает мне ноль узлов.
Когда я заменяю на «// *», консоль очень быстро заполняется текстом.
Так что не так с первым запросом?