개발꿈나무
XML data 읽어 xml 형식으로 뿌리기 본문
반응형
XML data를 읽어와서 뿌릴 때 string으로 변환되어 줄바꿈이나 들여쓰기가 전혀 되지 않고,
그냥 한줄로 쭉 출력될 때가 있었다.
어떻게 하면 들여쓰기와 줄바꿈이 포함되어 깔끔하게 출력되는지 알아보자
1. XmlWriter 사용하기
XML 파일을 읽어와 xmlwritersetting의 속성을 이용하여 줄바꿈과 들여쓰기를 적용하는 방법이다.
Indent가 들여쓰기에 관한 속성이고, NewLine이 줄바꿈에 관한 속성이다.
xml_doc = new XmlDocument();
try {
using (var reader = new StreamReader(xml_path, Encoding.Unicode))
{
xml_doc.Load(reader);
xml_str = Beautify(xml_doc);
Console.WriteLine(xml_str);
}
} catch (Exception e) {
Console.WriteLine(e.Message);
}
private static string Beautify(XmlDocument doc)
{
StringBuilder sb = new();
XmlWriterSettings setting = new XmlWriterSettings
{
Indent = true,
IndentChars = " ",
NewLineChars = "\r\n",
NewLineHandling = NewLineHandling.Replace
};
using (XmlWriter writer = XmlWriter.Create(sb, setting))
{
doc.Save(writer);
}
return sb.ToString();
}
2. XElement 사용하기
두번째 방법은 XElement를 사용하는 방법이다.
stream을 XmlReader로 읽는데 첫 번째 요소 노드를 찾을 때까지 읽어 XElement 개체를 로드한다.
try
{
using (var reader = new StreamReader(xml_path, Encoding.Unicode))
{
XmlReader r = XmlReader.Create(reader);
while(r.NodeType != XmlNodeType.Element)
{
r.Read();
}
XElement element = XElement.Load(r);
Console.WriteLine(element);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
그런데 위의 코드와 아래의 코드 결과가 같다 왜일까 ???
try
{
using (var reader = new StreamReader(xml_path, Encoding.Unicode))
{
element = XElement.Load(reader);
Console.WriteLine(element);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
반응형
'C# > C#' 카테고리의 다른 글
[C#] 특정 날짜의 주 가져오기 (GetWeekOfYear) (0) | 2022.01.19 |
---|---|
[C# 교과서] 11. C# 활용(5) - 제네릭 사용하기 (0) | 2022.01.18 |
[ASP.NET] MODEL에 여러 스키마의 DB 테이블 추가하기 (0) | 2021.09.16 |
[ASP.NET] InvalidCastException: 열에 널 데이터가 있습니다. (0) | 2021.09.16 |
[ASP.Net] Mornitoring Tool (0) | 2021.09.08 |
Comments