C#中處理保留特定XML tag的函數設計
在一段XML內文中倘若我們有需要保留特定幾個Tag
比如下列這一段
1 2 3 4 5 6 7 | <?xml version="1.0" encoding="UTF-8"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend! <sub>3</sub> test </body> </note> |
假設今天我想保留擷取的XML內文中也要包含sub tag則
此時我們不能直接透過 .InnerText來擷取
因為只會取的到純文字內文
這時可以藉由.InnerXML傳入後
將目標要保留的tag關鍵字改用全形進行替換之後再自行串根結點(避免多重根結點違反XML規則的突發狀況)間接再去取XML 純文字內文即可將該sub tag保留
如下code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | static string GetKeepSpecificXmlTagStr(string XmlContent) { XmlContent = System.Text.RegularExpressions.Regex.Replace(XmlContent, "<sub>", "<sub>", System.Text.RegularExpressions.RegexOptions.IgnoreCase); XmlContent = System.Text.RegularExpressions.Regex.Replace(XmlContent, "<sub", "<sub", System.Text.RegularExpressions.RegexOptions.IgnoreCase); XmlContent = System.Text.RegularExpressions.Regex.Replace(XmlContent, "</sub>", "</sub>", System.Text.RegularExpressions.RegexOptions.IgnoreCase); XmlContent = System.Text.RegularExpressions.Regex.Replace(XmlContent, "<sub />", "<sub />", System.Text.RegularExpressions.RegexOptions.IgnoreCase); string XmlStr = "<root>" + XmlContent + "</root>"; XmlStr = XmlStr.Trim(); string data = ""; if (IsValidateXmlFormat(XmlStr)) { XmlDocument XDoc = new XmlDocument(); XDoc.LoadXml(XmlStr); data = XDoc.InnerText; } else { data = XmlContent; } return data; } static bool IsValidateXmlFormat(string xml_content) { bool ret_flag = true; try { new XmlDocument().LoadXml(xml_content); } catch (Exception ex) { ret_flag = false; } return ret_flag; } |
留言
張貼留言