반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

개발꿈나무

[Blazor] XML Node 읽기 - XmlNodeType별로 출력하기 본문

C#/Blazor

[Blazor] XML Node 읽기 - XmlNodeType별로 출력하기

HYOKYE0NG 2021. 10. 22. 14:34
반응형

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 데이터가 잘 출력된다.

반응형
Comments