我的应用程序生成一个xml文件,然后将xslt转换为一个漂亮的html报告。我有一个问题\ n然而。有一些xslt技术可以做到这一点,但它们非常笨拙且耗时。
所以我的解决方案是做一个string.replace \ n到
< br />
然后强制xmlWriter用WriteRaw(text)写这个。问题是文本有时会有一些非法的字符,如>。
我无法在.net中找到任何只接受字符串并在xml友好字符串中转换它的实用程序方法。我看着反射器,处理这个逻辑的类不公开。
任何想法(除了编写我自己的代码来执行此操作)?
答案 0 :(得分:4)
永远不要使用字符串操作来生成XML。这不仅仅是因为让社交不善的人嘲笑你:它导致代码中存在你不知道存在的错误
从测试驱动的角度考虑它。您编写了一个使用字符串操作生成XML的方法。好的,现在为它编写一个测试用例,证明它永远不会发出格式不正确的XML。为了使测试证明这一点,您必须测试XML建议中概述的每个可能的方案。您是否足够了解XML建议以断言您的测试是否可以执行此操作?
不,你没有。除非你正在为XML生成编写框架,否则你并不是真的想要。这就是您使用System.Xml
中的类来生成XML的原因。写这些文章的人做了那些工作,所以你不必这样做。
Tomalak展示了如何做你正在尝试用XSLT做的事情。如果您使用XmlWriter
生成XML,请使用以下模式:
string s = "replace\nnewlines\nwith\nbreaks";
string[] lines = s.Split('\n');
for (int i=0; i<lines.Length; i++)
{
xw.WriteString(lines[i]);
if (i<lines.Length - 1)
{
xw.WriteElementString("br", "", "");
}
}
这在适当的地方使用字符串操作 - 在生成XML文本时,在XML之外操作字符串数据时 - 而不是在它之外的地方 -
答案 1 :(得分:3)