[英]How to replace xml special chars manually?
我的應用程序生成一個 xml 文件,然后將 xslt 轉換為一個不錯的 html 報告。 但是,我對 \n 有疑問。 有一些 xslt 技術可以做到這一點,但它們非常笨拙且耗時。
所以我的解決方案是做一個 string.replace \n 到
<br />
然后強制 xmlWriter 用 WriteRaw(text) 寫這個。 問題是文本有時包含一些非法字符,例如 >。
我在 .net 中找不到任何實用方法,它只接受一個字符串並將其轉換為一個對 xml 友好的字符串。 我查看了反射器和處理此邏輯的 class 不是公開的。
任何想法(除了編寫我自己的代碼來做到這一點)?
永遠不要使用字符串操作來生成 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 文本時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.