将wordml(xml)转换为XHTML / HTML

时间:2016-08-23 09:10:43

标签: c# html xml xhtml wordml

我目前正致力于将wordml-xml(或者更确切地说是正文部分)转换为有效的xhtml / html格式。原因是我想在我的WebForms-Application中正确显示一堆中断,段落等等。

过去几个小时我一直在寻找方法,我发现的唯一与我的问题有点类似的是以下博客(https://msdn.microsoft.com/en-us/library/ff628051(v=office.14).aspx#XHtml_Using)。问题是转换是基于.docx而不是基于XML。我可以尝试将XML转换为docx并使用它,但这并不是一种有效的方法来处理它。更不用说我必须首先找到将XML转换为docx的方法。

我真的希望那里的人可以帮助我,因为我有点想法。

提前致谢,快照。

示例:XML中的w:body-Element如下所示:

File f = new SpecificFileType()

在常规单词文档中,此内容是加载项单词的一部分显示为中断等。我想要的是将这些元素转换为正确的HTML / XHTML。

1 个答案:

答案 0 :(得分:0)

Try

protected string ConvertXmlToHtmlTable(string xml)
{
  StringBuilder html = new StringBuilder("<table align='center' " + 
     "border='1' class='xmlTable'>\r\n");
  try
  {
      XDocument xDocument = XDocument.Parse(xml);
      XElement root = xDocument.Root;

      var xmlAttributeCollection = root.Elements().Attributes();


      foreach (var ele in root.Elements())
      {
          if (!ele.HasElements)
          {
              string elename = "";
              html.Append("<tr>");

              elename = ele.Name.ToString();

              if (ele.HasAttributes)
              {
                  IEnumerable<XAttribute> attribs = ele.Attributes();
                  foreach (XAttribute attrib in attribs)
                  elename += Environment.NewLine + attrib.Name.ToString() + 
                    "=" + attrib.Value.ToString();
              }

              html.Append("<td>" + elename + "</td>");
              html.Append("<td>" + ele.Value + "</td>");
              html.Append("</tr>");
          }
          else
          {
              string elename = "";
              html.Append("<tr>");

              elename = ele.Name.ToString();

              if (ele.HasAttributes)
              {
                  IEnumerable<XAttribute> attribs = ele.Attributes();
                  foreach (XAttribute attrib in attribs)
                  elename += Environment.NewLine + attrib.Name.ToString() + "=" + attrib.Value.ToString();
              }

              html.Append("<td>" + elename + "</td>");
              html.Append("<td>" + ConvertXmlToHtmlTable(ele.ToString()) + "</td>");
              html.Append("</tr>");
          }
      }

      html.Append("</table>");
  }
  catch (Exception e)
  {
      return xml;
      // Returning the original string incase of error.
  }
  return html.ToString();
}