Search the Community
Showing results for tags 'xpathnavigator'.
-
I'm trying to pull some data from a Microsoft Word XML Document, but the code I have generates sloppy output (see streamLog.txt). I am trying to write each row of tab delimited data on its own line, but I never appends a carriage return. My code consists of 2 methods: readDocument and getXmlTables. The readDocument routine works - it is just to show you how I open the file (if anyone needs it). The problem comes from getXmlTables not putting rows on separate lines: private void readDocument() { XmlDocument myXMLDocument = new XmlDocument("myDoc.xml"); const string wordDocXml = "/word/document.xml"; string pkgNs = myXMLDocument.DocumentElement.Attributes["xmlns:pkg"].Value; XPathNavigator nav = myXMLDocument.CreateNavigator(); if ((nav.MoveToFollowing("part", pkgNs)) && (nav.MoveToAttribute("name", pkgNs))) while (nav.Value != wordDocXml) if (!(nav.MoveToParent()) || !(nav.MoveToFollowing("part", pkgNs)) || !(nav.MoveToAttribute("name", pkgNs))) throw new InvalidOperationException("Unexpected file format. Missing [pkg] namespace."); if (nav.Value == wordDocXml) { string path = @"C:\Temp"; if (Directory.Exists(path)) { FileInfo file = new FileInfo(Path.Combine(path, "streamLog.txt")); using (StreamWriter sw = new StreamWriter(file.FullName, false, Encoding.UTF8)) { getXmlTables(nav, sw); sw.Close(); } } } } void getXmlTables(XPathNavigator nav, StreamWriter stream) { string wNs = "[url]http://schemas.openxmlformats.org/wordprocessingml/2006/main[/url]"; while (nav.MoveToFollowing("tbl", wNs)) { while (nav.MoveToFollowing("tr", wNs)) { while (nav.MoveToFollowing("t", wNs)) { stream.Write(string.Format("{0}\t", nav.Value)); } stream.WriteLine(); } stream.WriteLine(); } stream.WriteLine(); } Forgive this question that seems simple, but I can't find an answer. The attached zip file contains an XML document exported by Microsoft Word that I am trying to parse along with the log that it creates. I've looked at several examples on how to use XPathNavigator, but there does not seem to be detailed information that I can grasp the concepts of. Is anyone on here good at using XPathNavigator? I'd really like some advice from someone that is good at using XPathNavigator. Regards, Joe myDoc.zip