개발꿈나무
[Blazor] XML Node 읽기 - XmlNodeType별로 출력하기 본문
반응형
Xml Reader로 xml 파일을 읽을 경우 Node의 Type을 알 수 있다.
XmlTextReader로 데이터를 읽었을 때 노드의 타입을 알아보고,
각각의 XmlNodeType의 형태에 따라 읽는 방법에 대해 알아보자.
우선 XmlNodeType의 열거형은 다음과 같다.
Attribute, CDATA, , Comment, Document, DocumentFragment, DocumentType, Element, EndElement, EndEntity, Entity, EntityReference, None, Notation, ProcessingInstruction, SignificantWhitespace, Text, Whitespace, XmlDeclaration
xml 파일을 XmlReader로 읽으면서
XmlNodeType별로 알맞는 메소드를 통해 값을 출력해보자.
node의 값을 가져오는 데에는 Name, Value 두가지의 방법이 있는데,
간단하게 말하자면 <>태그 안에 있는 node는 Name으로
<></>태그 사이에 있는 node는 Value로 가져오면 된다.
아래의 코드는 Switch문을 사용하여 NodeType에 따라 console에 데이터를 출력하는 코드이다.
private void XML_String(string dcn_no)
{
string xmlrepositoryString = SysinfoService.GetXMLRepository();
string xml_path = @$"{xmlrepositoryString}\{dcn_no}.xml";
var reader2 = new StreamReader(xml_path, Encoding.Unicode);
using (XmlReader Reader = XmlReader.Create(reader2))
{
while (Reader.Read())
{
switch (Reader.NodeType)
{
case XmlNodeType.Element:
Console.Write("\n<" + Reader.Name + ">");
break;
case XmlNodeType.Text:
Console.Write(Reader.Value);
break;
case XmlNodeType.CDATA:
Console.Write("<![CDATA[" + Reader.Value + "]]>");
break;
case XmlNodeType.XmlDeclaration:
break;
case XmlNodeType.ProcessingInstruction:
Console.Write("<?" + Reader.Name + " " + Reader.Value + "?>");
break;
case XmlNodeType.Comment:
Console.Write("<!--" + Reader.Value + "-->");
break;
case XmlNodeType.EntityReference:
Console.Write(Reader.Name);
break;
case XmlNodeType.EndElement:
Console.Write("</" + Reader.Name + ">");
break;
}
}
}
}
결과는 다음과 같이 XML 데이터가 잘 출력된다.
반응형
'C# > Blazor' 카테고리의 다른 글
[Blazor] HTML Tag Encoding (0) | 2021.12.09 |
---|---|
[Blazor] Blazor에서 JavaScript 사용하기 (div.empty() 작업) (0) | 2021.11.22 |
[Blazor] server에 있는 파일 다운로드 받기 - BlazorDownloadFile (1) | 2021.10.22 |
[Blazor] NuGet Package 설치하기 (0) | 2021.10.21 |
[Blazor] xml 파일 Chrome으로 열기(2) - Chrome.exe path 가져와서 열기(Process.GetProcessByName) (0) | 2021.10.15 |
Comments