【发布时间】:2018-07-16 07:15:43
【问题描述】:
我正在尝试制作一个 C# 程序,它接受一个 XML 文件并将其转换为 HTML 文件,最明显的方法是使用 HtmlTextWriter 对象,但我要求需要 6 行代码写一个标签、一个属性、一行内容和一个结束标签。有没有更清洁/更有效的方法来做到这一点?
该程序正在使用 XML 文件(由 XML Schema 定义的格式)来自定义 HTML 模板并用数据填充 HTML 模板。示例如下:
static string aFileName;
static XmlDocument aParser;
static HtmlTextWriter HTMLIOutput;
static StringWriter HTMLIBuffer;
static StreamWriter HTMLOutIFile;
static HtmlTextWriter HTMLEOutput;
static StringWriter HTMLEBuffer;
static StreamWriter HTMLOutEFile;
HTMLIBuffer = new StringWriter();
HTMLIOutput = new HtmlTextWriter(HTMLIBuffer);
XmlElement feed = aParser.DocumentElement;
HTMLIOutput.WriteBeginTag("em");
HTMLIOutput.WriteAttribute("class", "updated");
HTMLIOutput.Write(HtmlTextWriter.TagRightChar);
HTMLIOutput.Write("Last updated: " +
feed.SelectSingleNode("updated").InnerText.Trim());
HTMLIOutput.WriteEndTag("em");
HTMLIOutput.WriteLine();
HTMLIOutput.WriteLine("<br>");
要写像<em class="updated">Last updated: 07/16/2018</em><br /> 这样的东西,我真的需要有这么多不同的行来构建标签的一部分吗?
注意:是的,我可以直接将内容写入文件,但如果可能我更喜欢更智能的方式,这样人为错误就会更少。
【问题讨论】:
-
您能否描述一下您要做什么,即您的程序的目的是什么?没有更多细节很难告诉你什么是最好的解决方案。您是否考虑过使用 Razor 引擎?见github.com/Antaris/RazorEngine
-
您应该考虑可扩展样式表语言转换 (XSLT)。如果你不喜欢这个,试试 HtmlDocument。
-
在其核心级别,我使用 XML Schema 定义的 XML 文件来自定义包含用户数据的内置 HTML 模板。我将添加一些代码示例。不,此时我只使用基本 C# 功能,但如果需要其他功能,我会使用它。
-
我会将 XML 字符串反序列化为 C# 对象,然后使用诸如 Razor 引擎(我在之前的评论中提到过)之类的库来生成 HTML。
标签: c#