如何使用C#代码移除XML内容中的大括号
C# 开发场景下移除XML内容首尾大括号的实现方案
待处理的输入示例
{<RESPONSE> <RESPONSE_TEXT>Registered P_UK4EZI</RESPONSE_TEXT> <RESULT>OK</RESULT> <RESULT_CODE>-1</RESULT_CODE> <TERMINATION_STATUS>SUCCESS</TERMINATION_STATUS> <MAC_KEY>KZzTDdNErHVNZzRRfKyrbuAj++J20IAF4XpmsmQFjdV7G4PauwHkUobkhEzjPRbD9GNUq5EtoOauxTSZHgsDeLx6FAWasSKb2FcsC7SMmCTV5VW4Wd5w+9tP1Hzy93wnedKPggExJbxA3BH8xvFjqvmiCHjB92fsPfHWXcqfMHhoRW8quA/B6jx44dm</MAC_KEY> <MAC_LABEL>P_UK4EZI</MAC_LABEL> <ENTRY_CODE>1570</ENTRY_CODE> </RESPONSE>}
实现方案
方案1:首尾字符裁剪(推荐,性能最高)
适用场景:确定大括号仅出现在XML内容的最开头和最末尾,且仅各存在1个
// 原始带大括号的XML字符串 string rawXml = "{<RESPONSE>此处为你的完整XML内容</RESPONSE>}"; // 仅移除首尾大括号 string cleanXml = rawXml.TrimStart('{').TrimEnd('}'); // 若需要同时清理首尾多余空白,可调整为 // string cleanXml = rawXml.Trim().TrimStart('{').TrimEnd('}').Trim();
该方法不会处理XML内容中间可能存在的大括号,仅清理首尾的目标字符,性能最优,适合绝大多数接口返回被额外包裹大括号的场景。
方案2:正则匹配提取XML内容
适用场景:不确定大括号的数量和位置,需要精准提取< >包裹的XML完整内容
using System.Text.RegularExpressions; string rawXml = "{<RESPONSE>此处为你的完整XML内容</RESPONSE>}"; // 匹配从第一个<到最后一个>的完整XML内容 Match xmlMatch = Regex.Match(rawXml, @"<.*>$", RegexOptions.Singleline); if (xmlMatch.Success) { string cleanXml = xmlMatch.Value; }
该方法会直接提取完整的XML节点内容,自动忽略外层所有非XML标签的包裹字符,兼容性更强。
处理后的标准XML结果示例
<RESPONSE> <RESPONSE_TEXT>Registered P_UK4EZI</RESPONSE_TEXT> <RESULT>OK</RESULT> <RESULT_CODE>-1</RESULT_CODE> <TERMINATION_STATUS>SUCCESS</TERMINATION_STATUS> <MAC_KEY>KZzTDdNErHVNZzRRfKyrbuAj++J20IAF4XpmsmQFjdV7G4PauwHkUobkhEzjPRbD9GNUq5EtoOauxTSZHgsDeLx6FAWasSKb2FcsC7SMmCTV5VW4Wd5w+9tP1Hzy93wnedKPggExJbxA3BH8xvFjqvmiCHjB92fsPfHWXcqfMHhoRW8quA/B6jx44dm</MAC_KEY> <MAC_LABEL>P_UK4EZI</MAC_LABEL> <ENTRY_CODE>1570</ENTRY_CODE> </RESPONSE>
内容的提问来源于stack exchange,提问作者vijayaraghavan Devaraj
相关产品推荐
相关产品推荐

