다음을 통해 공유


문자열을 구문 분석하는 방법(LINQ to XML)

이 문서에서는 C# 및 Visual Basic에서 문자열을 구문 분석하여 XML 트리를 만드는 방법을 보여 줍니다.

예시

다음 C# 코드에서는 XML 문자열의 구문을 분석하는 방법을 보여줍니다.

XElement contacts = XElement.Parse(
    @"<Contacts>
        <Contact>
            <Name>Patrick Hines</Name>
            <Phone Type=""home"">206-555-0144</Phone>
            <Phone Type=""work"">425-555-0145</Phone>
            <Address>
            <Street1>123 Main St</Street1>
            <City>Mercer Island</City>
            <State>WA</State>
            <Postal>68042</Postal>
            </Address>
            <NetWorth>10</NetWorth>
        </Contact>
        <Contact>
            <Name>Gretchen Rivas</Name>
            <Phone Type=""mobile"">206-555-0163</Phone>
            <Address>
            <Street1>123 Main St</Street1>
            <City>Mercer Island</City>
            <State>WA</State>
            <Postal>68042</Postal>
            </Address>
            <NetWorth>11</NetWorth>
        </Contact>
    </Contacts>");
Console.WriteLine(contacts);

비슷한 방식으로 Visual Basic에서 문자열을 구문 분석할 수 있습니다. 그러나 XML 리터럴은 문자열에서 XML을 구문 분석하는 것과 동일한 성능 저하를 겪지 않으므로 다음 코드에 표시된 것처럼 XML 리터럴을 사용하는 것이 더 효율적입니다.

XML 리터럴을 사용하면 XML을 Visual Basic 프로그램에 복사하여 붙여넣기만 하면 됩니다.

참고 항목

텍스트의 구문을 분석하거나 텍스트 파일에서 XML 문서를 로드하는 방법은 함수 생성보다 효율적이지 않습니다. 코드에서 XML 트리를 초기화하는 경우 텍스트의 구문을 분석하는 경우보다 함수 생성을 사용하는 경우에 프로세서 시간을 적게 사용합니다.

Dim contacts as XElement = _
    <Contacts>
        <Contact>
            <Name>Patrick Hines</Name>
            <Phone Type="home">206-555-0144</Phone>
            <Phone Type="work">425-555-0145</Phone>
            <Address>
            <Street1>123 Main St</Street1>
            <City>Mercer Island</City>
            <State>WA</State>
            <Postal>68042</Postal>
            </Address>
            <NetWorth>10</NetWorth>
        </Contact>
        <Contact>
            <Name>Gretchen Rivas</Name>
            <Phone Type="mobile">206-555-0163</Phone>
            <Address>
            <Street1>123 Main St</Street1>
            <City>Mercer Island</City>
            <State>WA</State>
            <Postal>68042</Postal>
            </Address>
            <NetWorth>11</NetWorth>
        </Contact>
    </Contacts>

루트 Contacts 노드에는 두 개의 Contact 노드가 있습니다. 구문 분석된 XML에서 특정 데이터에 액세스하려면 XElement.Elements() 메서드를 사용합니다. 이 경우에는 루트 Contacts 노드의 자식 요소를 반환합니다. 다음 예제에서는 첫 번째 Contact 노드를 콘솔에 출력합니다.

List<XElement> contactNodes = contacts.Elements("Contact").ToList();
Console.WriteLine(contactNodes[0]);
Dim contactNodes As List(Of XElement) = contacts.Elements("Contact").ToList()
Console.WriteLine(contactNodes(0))

참고 항목