c# xmldocument 예제

2019年8月3日

예를 들어 다음 코드는 문서의 각 책의 제목을 검색합니다. 책 노드는 서로 형제입니다. 특정 요소에 XmlElement.GetElementsByTagName() 메서드를 사용하여 XML 문서의 일부를 검색할 수도 있습니다. 이 경우 XmlDocument는 일치하는 항목을 찾는 모든 하위 노드를 검색합니다. 이 메서드를 사용 하려면 먼저 요소에 해당 하는 XmlNode를 검색 하 고 XmlElement에이 개체를 캐스팅 합니다. 다음 예제에서는 이 기술을 사용하여 특정 책의 별표를 찾는 방법을 보여 줍니다. 이 예제는 책 노드에서 이 작업을 수행합니다. 다음 예제에서는 XmlDocument 개체를 만들고 GetElementsByTagName 메서드와 결과 XmlNodeList 개체를 사용 하 여 모든 책 제목을 표시 합니다. 두 가지 방법은 매우 유사하지만 “linq”맛 “XDocument”을 사용하면 C # 코드의 몇 줄을 저장할 수 있습니다.

두 방법 모두 매우 간단하며 읽을 수있는 많은 문제가 없어야합니다. XML 문서를 구문 분석하는 방법에만 관심이 있는 경우 문서의 나머지 부분을 건너뛸 수 있습니다. 그러나 이 데모를 “실행 중” 예제로 만들기 위해 “XMLParsingExample” 프로젝트에 대한 간략한 전반적인 소개를 드리겠습니다. 이 예제에서 사용되는 문자열은 Xpath 쿼리입니다. XPath 예제는 여기에서 더 많은 예제를 찾을 수 있습니다. 보시다시피 이것은 XmlWriter 접근 방식보다 좀 더 많은 개체 지향적이며 코드가 좀 더 필요합니다. 우리가하는 일은 CreateElement() 및 CreateAttribute() 메서드를 사용하여 새 요소와 특성을 모두 만드는 데 사용할 XmlDocument 개체를 인스턴스화한다는 것입니다. 이렇게 할 때마다 문서 또는 다른 요소에 직접 요소를 추가합니다. 사용자 요소가 루트 요소에 추가되는 동안 루트 요소(“사용자”)가 문서에 직접 추가되는 예제에서 이를 볼 수 있습니다. 물론 특성은 Attributes 속성의 추가() 메서드를 사용하여 속한 요소에 추가됩니다. 전체 XML 문서는 Save() 메서드를 사용하는 마지막 줄의 디스크에 기록됩니다.

이 예제는 책 가격을 콘솔에 씁니다. 가격 노드는 책 노드의 마지막 자식입니다. 다음 예제에서는 루트 노드를 가져오고, 루트 노드의 첫 번째 자식 노드로 이동하고, 해당 하위 노드에 액세스하고, 상위 노드로 다시 이동한 다음 형제 노드를 탐색하는 방법을 보여 주며, 이 예제에서는 루트 노드를 가져오는 방법을 보여 주며, 해당 노드에 액세스합니다. 이 예제에서는 두 가지 도우미 메서드를 보여 줍니다. 그 중 하나는 목록에서 노드를 더 높게 이동합니다. 다른 하나는 노드를 더 낮게 이동합니다. XmlDocument 클래스 및 XDocument 클래스 클래스의 몇 가지 예를 보여 드리겠습니다. 예를 들어 이 예제에서는 모든 책 제목의 컬렉션을 가져옵니다. 이 예제에서는 루트 노드를 가져옵니다 및 콘솔에 문서의 내용을 출력 하는 해당 노드를 사용 합니다. 이미 언급했듯이 XmlWriter를 사용할 때보다 코드가 조금 더 필요하지만 기존 XML 문서로 이동하여 몇 가지 값을 변경해야 하는 상황을 상상해 보십시오. XmlWriter 접근 방식을 사용하면 먼저 XmlReader를 사용하여 모든 정보를 읽고 저장한 다음 변경한 다음 XmlWriter를 사용하여 전체 정보를 다시 작성해야 합니다. XmlDocument는 모든 것을 메모리에 보관하므로 기존 XML 파일을 업데이트하는 것이 훨씬 간단해집니다.

다음 예제에서는 이전 장에서 만든 “test-doc.xml” 파일을 열고 모든 사용자의 나이를 하나씩 늘입니다. 얼마나 쉬운지 확인하십시오: 이 예제는 파일에서 XML을 로드합니다. 파일이 존재하지 않는 경우 일부 XML만 생성하고 로드합니다. gesmes:봉투는 DocumentElement 속성을 사용하여 액세스할 수 있는 루트 요소입니다. 그런 다음 ChildNodes 컬렉션 속성을 사용하여 이 노드의 자식에 액세스할 수 있습니다. 이 예제에서는 자식 노드가 루트/문서 요소 아래세 수준 아래로 표시되기를 원합니다. 이전 장에서 XmlReader 기반 코드와 동일한 다음 코드를 사용하여 수행할 수 있습니다.

カテゴリー:未分類