C# Xml의 값을 일괄 변환한다.
사용 메소드
Regex.Replace : 정규식에 일치하는 것 들을 한번에 치환한다.
HttpUtility.HtmlDecode : Xml Escape Char를 String 으로 다시 변환
XDocument.Parse(string) : 해당 string을 Pretty XML 형식으로 변환
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web;
using System.Xml;
using System.Xml.Linq;
using System.Xml.Serialization;
using System.Xml.Xsl;
namespace XmlLeafNoteConverter
{
public class Program
{
static void Main(string[] args)
{
string input = "<GROUP alias=\"XR\" aliasTxt=\"XP 매출 & 기타\"><STATEMENT><BUIZEI>에<라&이</BUIZEI><TAX>모르겠다</TAX><ITEMS><ITEM><BUIZEI>아이템안쪽1</BUIZEI><TAX>아이템안쪽2</TAX></ITEM><ITEM><BUIZEI>아이템안쪽1</BUIZEI><TAX>아이템안쪽2</TAX></ITEM><ITEM><BUIZEI>아이템안쪽1</BUIZEI><TAX>아이템안쪽2</TAX></ITEM></ITEMS></STATEMENT></GROUP><GROUP alias=\"XR\" aliasTxt=\"XP 매출 & 기타\"><STATEMENT><BUIZEI>에<라&이</BUIZEI><TAX>모르겠다</TAX><ITEMS><ITEM><BUIZEI>아이템안쪽1</BUIZEI><TAX>아이템안쪽2</TAX></ITEM><ITEM><BUIZEI>아이템안쪽1</BUIZEI><TAX>아이템안쪽2</TAX></ITEM><ITEM><BUIZEI>아이템안쪽1</BUIZEI><TAX>아이템안쪽2</TAX></ITEM></ITEMS></STATEMENT></GROUP>";
string formatInput = $"<Wie>{input}</Wie>"; //들어올 xml이 RootNode 일 경우를 대비한다
var regex = new Regex("(\\<.*?\\>)(.*)(\\<\\/.*?\\>)");
var result = regex.Replace(HttpUtility.HtmlDecode((XDocument.Parse(formatInput).ToString())), x =>
{
var prefix = x.Groups[1].Value;
var value = x.Groups[2].Value;
var suffix = x.Groups[3].Value;
return $"{prefix}<![CDATA[{value}]]>{suffix}";
}
);
string replaceResult = result.Replace("<Wie>", "").Replace("</Wie>", "");
}
}
}
'C#' 카테고리의 다른 글
C# 파일 압축하기 (0) | 2020.03.07 |
---|---|
C# 파일 내용 검색 (0) | 2020.03.07 |
댓글