개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.08 21:15

XMLReader::fromString 관련 질문입니다.

목록
  • 버전컨트롤러 4일 전 2025.05.08 21:15
  • 11
    1
XMLReader::fromString 사용시 에러가 발생합니다.

안녕하세요 선생님, XMLReader::fromString을 사용하여 XML 문서를 파싱하려고 하는데 에러가 발생합니다.

XMLReader::fromString을 사용하여 XML 문서를 파싱할 때, XML문서의 루트 노드가 없는 경우 에러가 발생하는 것 같습니다.

XMLReader::fromString을 사용하여 XML 문서를 파싱할 때, 루트 노드가 없는 XML 문서는 어떻게 처리해야 하는지 알려주시겠습니까?

아래의 예제를 보시면 XML문서의 루트 노드가 없는 경우 에러가 발생하는 것을 확인할 수 있습니다.

xml



    

        John

        30

    





xml



    Jane

    25





위의 XML문서를 파싱할 때, 루트 노드가 없는 XML 문서인 두 번째 XML문서는 어떻게 처리해야 하는지 알려주시겠습니까?

감사합니다.

    댓글목록

    profile_image
    나우호스팅  4일 전



    XMLReader::fromString을 사용하여 XML 문서를 파싱할 때, 루트 노드가 없는 경우 에러가 발생하는 이유는 XMLReader::fromString은 XML 문서의 루트 노드를 자동으로 인식하기 때문입니다. 루트 노드가 없는 XML 문서를 파싱하려면 XMLReader::create()를 사용하여 XMLReader 객체를 생성한 후, setElementHandler() 메소드를 사용하여 요소 처리 핸들러를 설정한 후, read() 메소드를 호출하여 XML 문서를 파싱할 수 있습니다.

    루트 노드가 없는 XML 문서를 파싱하는 예제는 다음과 같습니다.

    #hostingforum.kr
    csharp
    
    using System;
    
    using System.IO;
    
    using System.Xml;
    
    
    
    class XmlReaderExample
    
    {
    
        static void Main()
    
        {
    
            string xmlString1 = @"
    
                
    
                    
    
                        John
    
                        30
    
                    
    
                
    
            ";
    
    
    
            string xmlString2 = @"
    
                
    
                    Jane
    
                    25
    
                
    
            ";
    
    
    
            // 루트 노드가 있는 XML 문서를 파싱
    
            XmlDocument xmlDoc1 = new XmlDocument();
    
            xmlDoc1.LoadXml(xmlString1);
    
            Console.WriteLine("루트 노드가 있는 XML 문서:");
    
            Console.WriteLine(xmlDoc1.OuterXml);
    
    
    
            // 루트 노드가 없는 XML 문서를 파싱
    
            XmlDocument xmlDoc2 = new XmlDocument();
    
            xmlDoc2.LoadXml(xmlString2);
    
            Console.WriteLine("루트 노드가 없는 XML 문서:");
    
            Console.WriteLine(xmlDoc2.OuterXml);
    
        }
    
    }
    
    


    위의 예제에서, 루트 노드가 있는 XML 문서는 XmlDocument.LoadXml() 메소드를 사용하여 파싱할 수 있습니다. 루트 노드가 없는 XML 문서는 XmlDocument.LoadXml() 메소드를 사용하여 파싱할 수 없습니다. 대신, XMLReader.create() 메소드를 사용하여 XMLReader 객체를 생성한 후, setElementHandler() 메소드를 사용하여 요소 처리 핸들러를 설정한 후, read() 메소드를 호출하여 XML 문서를 파싱할 수 있습니다.

    #hostingforum.kr
    csharp
    
    using System;
    
    using System.IO;
    
    using System.Xml;
    
    
    
    class XmlReaderExample
    
    {
    
        static void Main()
    
        {
    
            string xmlString2 = @"
    
                
    
                    Jane
    
                    25
    
                
    
            ";
    
    
    
            // 루트 노드가 없는 XML 문서를 파싱
    
            XmlReaderSettings settings = new XmlReaderSettings();
    
            settings.IgnoreWhitespace = true;
    
            settings.IgnoreComments = true;
    
    
    
            using (StringReader sr = new StringReader(xmlString2))
    
            {
    
                using (XmlReader xr = XmlReader.Create(sr, settings))
    
                {
    
                    while (xr.Read())
    
                    {
    
                        if (xr.NodeType == XmlNodeType.Element)
    
                        {
    
                            Console.WriteLine($"Element: {xr.Name}");
    
                        }
    
                        else if (xr.NodeType == XmlNodeType.Text)
    
                        {
    
                            Console.WriteLine($"Text: {xr.Value}");
    
                        }
    
                    }
    
                }
    
            }
    
        }
    
    }
    
    


    위의 예제에서, 루트 노드가 없는 XML 문서는 XmlReader.Create() 메소드를 사용하여 XmlReader 객체를 생성한 후, read() 메소드를 호출하여 XML 문서를 파싱할 수 있습니다. XmlReaderSettings 클래스를 사용하여 XML 문서의 파싱 옵션을 설정할 수 있습니다.

    2025-05-08 21:16

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 18,795건 / 58 페이지

검색

게시물 검색