0

私は現在、wordml-xml (または本体部分) を有効な xhtml/html 形式に変換する方法に取り組んでいます。その理由は、WebForms-Application で適切に表示したい改行や段落などがたくさんあるためです。

過去数時間、これを行う方法を探していましたが、私の問題に少し似ていることがわかったのは、次のブログ ( https://msdn.microsoft.com/en-us/library/ff628051(v =office.14).aspx#XHtml_Using )。問題は、変換が XML ではなく .docx に基づいていることです。XML を docx に変換して作業することもできますが、それは効果的な処理方法ではありません。言うまでもなく、最初に XML を docx に変換する方法を見つける必要があります。

私は少しアイデアが足りないので、誰かがこれを手伝ってくれることを本当に願っています。

前もってありがとう、スナップ。

例: XML 内の w:body-Element は次のようになります。

<w:body xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml">
  <wx:sect xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint">
    <w:p wsp:rsidR="00FF5F75" wsp:rsidRDefault="00626E80" xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2">
      <w:r wsp:rsidRPr="00EA67E2">
        <w:rPr>
          <w:rFonts w:fareast="Times New Roman" />
          <w:sz w:val="26" />
          <w:sz-cs w:val="26" />
          <w:lang w:fareast="JA" />
        </w:rPr>
        <w:t>Leider können wir die Kosten für die Impfung gegen %</w:t>
      </w:r>
      <w:r wsp:rsidRPr="00EA67E2">
        <w:rPr>
          <w:rFonts w:fareast="Times New Roman" />
          <w:sz w:val="26" />
          <w:sz-cs w:val="26" />
          <w:highlight w:val="yellow" />
          <w:lang w:fareast="JA" />
        </w:rPr>
        <w:t>XY</w:t>
      </w:r>
      <w:r wsp:rsidRPr="00EA67E2">
        <w:rPr>
          <w:rFonts w:fareast="Times New Roman" />
          <w:sz w:val="26" />
          <w:sz-cs w:val="26" />
          <w:lang w:fareast="JA" />
        </w:rPr>
        <w:t>% nicht übernehmen.</w:t>
      </w:r>
      <w:r wsp:rsidRPr="00EA67E2">
        <w:rPr>
          <w:rFonts w:fareast="Times New Roman" />
          <w:sz w:val="26" />
          <w:sz-cs w:val="26" />
          <w:lang w:fareast="JA" />
        </w:rPr>
        <w:br />
      </w:r>
      <w:r wsp:rsidRPr="00EA67E2">
        <w:rPr>
          <w:rFonts w:fareast="Times New Roman" />
          <w:sz w:val="26" />
          <w:sz-cs w:val="26" />
          <w:lang w:fareast="JA" />
        </w:rPr>
        <w:br />
        <w:t>Die DAK-Gesundheit zahlt Ihnen die Impfungen, die in den Schutzimpfungs-Richtlinien des Gemeinsamen Bundesausschusses genannt sind. Die Impfung gegen %</w:t>
      </w:r>
....

これがアドインワードの一部である通常のワードドキュメントでは、ブレークなどとして表示されます。私が望むのは、これらの要素を適切な HTML/XHTML に変換することです。

4

2 に答える 2

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();
}
于 2016-08-23T09:17:12.530 に答える