private void importoutxml(Word.Document DOC, string HtmlFileName, EPUB mEpub) { int p = 0; XmlDocument xml = mEpub.getncxml(); XmlNode navMapNode = xml.SelectSingleNode("ncx/navMap"); string webfile = HtmlFileName.Substring(HtmlFileName.LastIndexOf(@"\") + 1); try { object x = DOC.GetCrossReferenceItems(Microsoft.Office.Interop.Word.WdReferenceType.wdRefTypeHeading); Array strs = (Array)x; int cc = 0; string pstr; foreach (Word.Paragraph Paragr in DOC.Paragraphs) { int level = (int)Paragr.OutlineLevel; cc = 0; pstr = ""; if (level < 9) { p++; try { Paragr.ID = "_ncx_toc_" + p.ToString(); string tstr = ReplaceLowOrderASCIICharacters(Paragr.Range.Text.Trim()); if (p == 1) { xml.SelectSingleNode("ncx/docTitle/text").InnerXml = tstr; } for (int i = 0; i < strs.Length; i++) { string hreadingstr = strs.GetValue(i + 1).ToString(); if (hreadingstr.IndexOf(tstr) >= 0) { tstr = hreadingstr; cc = hreadingstr.Length - hreadingstr.TrimStart().Length; for (int pi = i; pi >= 0; pi--) { string phreadingstr = strs.GetValue(pi + 1).ToString(); int pc = phreadingstr.Length - phreadingstr.TrimStart().Length; if (pc < cc) { pstr = phreadingstr; break; } } break; } } XmlElement navPointEl = xml.CreateElement("navPoint"); navPointEl.Prefix = Paragr.Range.ParagraphStyle.NameLocal.ToString(); navPointEl.SetAttribute("id", "navPoint-" + p.ToString()); navPointEl.SetAttribute("playOrder", p.ToString()); XmlElement subPoint = xml.CreateElement("navLabel"); subPoint.InnerXml = "<text>" + tstr.Trim() + "</text>"; XmlElement ConPoint = xml.CreateElement("content"); ConPoint.SetAttribute("src", "Text/" + mEpub.chapterName + ".xhtml#_ncx_toc_" + p.ToString()); navPointEl.AppendChild(subPoint); navPointEl.AppendChild(ConPoint); if (pstr.Length > 0) { for (int i = navMapNode.ChildNodes.Count - 1; i >= 0; i--) { XmlElement xe = (XmlElement)navMapNode.ChildNodes[i]; if (pstr.IndexOf(xe.SelectSingleNode("navLabel").SelectSingleNode("text").InnerXml) >= 0) { xe.AppendChild(navPointEl); } else { if (xe.ChildNodes.Count > 1) { foreachnode(xe, navPointEl, pstr); } } } } else { navMapNode.AppendChild(navPointEl); } } catch (Exception ex) { continue; } } } } catch (Exception) { return; } DOC.SaveAs(HtmlFileName, Word.WdSaveFormat.wdFormatFilteredHTML, false, "", false); }