회사_ C#, MSSQL, WPF

C# wpf .xml 파일 읽기(열기) 데이터 처리하기# wpf .xml 파일 열고 데이터 처리하기

lsme 2024. 9. 27. 09:00

 

 

XML이란?

XML(Extensible Markup Language)는 데이터 저장 및 전송을 위한 마크업 언어입니다.

XML은 주로 데이터 구조를 정의하고 정보를 계층적으로 표현하는 데 사용됩니다.

 

 

XML의 기본 구조

XML 문서는 다음과 같은 기본 구성 요소로 이루어져 있습니다:

  1. 선언:
    • XML 문서의 시작 부분에 XML 선언이 포함됩니다. 예: <?xml version="1.0" encoding="UTF-8"?>
  2. 루트 요소:
    • XML 문서는 단 하나의 루트 요소(root element)를 가져야 합니다. 모든 다른 요소는 이 루트 요소의 하위 요소가 됩니다.
  3. 요소(Elements):
    • 요소는 XML 문서의 기본 단위로, 시작 태그와 종료 태그로 구성됩니다. 예: <element>Content</element>
  4. 속성(Attributes):
    • 요소는 추가 정보를 제공하는 속성을 가질 수 있습니다. 속성은 시작 태그 내에 정의됩니다. 예: <element id="1">Content</element>
  5. 텍스트 콘텐츠:
    • 요소는 데이터를 담고 있는 텍스트 콘텐츠를 포함할 수 있습니다. 요소는 텍스트, 다른 요소, 또는 두 가지를 모두 포함할 수 있습니다.

 

[예시코드]

<?xml version="1.0" encoding="UTF-8"?>
<Library>
    <Book id="1">
        <Title>Effective C#</Title>
        <Author>Bill Wagner</Author>
        <Year>2019</Year>
    </Book>
    <Book id="2">
        <Title>Learning XML</Title>
        <Author>Erik T. Ray</Author>
        <Year>2003</Year>
    </Book>
</Library>

 

  • 루트 요소: <Library>
  • 하위 요소: <Book>, <Title>, <Author>, <Year>
  • 속성: <Book id="1">에서 id 속성

 

 

XML의 장점

  1. 가독성: XML은 텍스트 기반으로, 사람이 읽고 이해하기 쉽습니다.
  2. 확장성: 새로운 데이터 구조를 쉽게 추가할 수 있습니다.
  3. 표준화: 다양한 플랫폼과 언어에서 지원됩니다.

 

 


 

 

 

 

 

이 함수는 화면의 버튼을 클릭하면 작동하는 함수이다. 

코드에 주석으로 아주 자세히 작성해였다. 

 private void btn_Add_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
 {
     try
     { 
		// 파일 열기 대화상자를 생성
         OpenFileDialog dlg = new OpenFileDialog();

		// 사용자가 파일을 선택했는지 확인
         if(dlg.ShowDialog() == DialogResult.OK)
         {
         	 // XML 문서를 로드하기 위한 XmlDocument 객체 생성
             XmlDocument doc = new XmlDocument();
             // 사용자가 선택한 XML 파일을 로드
             doc.Load(dlg.FileName);

             // XML 내의 모든 Message 노드를 가져오기
             // XPath 쿼리를 사용하여 A아래의 B노드들을 선택
             XmlNodeList messageNodes = doc.SelectNodes("/A/B");

             foreach (XmlNode messageNode in messageNodes)
             {
                 // <B> 노드의 id 속성 값
                 string messageId = messageNode.Attributes["id"].Value;

                 // <B> 하위의 <one>, <two>, <three> 값 추출
                 string ONE = messageNode.SelectSingleNode("one")?.InnerText.Trim();
                 string TWO = messageNode.SelectSingleNode("two")?.InnerText.Trim();
                 string THREE = messageNode.SelectSingleNode("three")?.InnerText.Trim();                         
				 
                 // 데이터베이스에 메시지를 저장하는 메서드 호출
                 this.{db 불러오는 형식}.(messageId, ONE, TWO, THREE);
             }
         }
     }
     catch(Exception ex)
     { 
     }
 }

 

 

 

 

별도로 체크해야할 것

 

 

1. .XML의 구조


<?xml version="1.0"?>
  <!-- ================================================================ -->
  <!--                             정보                       -->
  <!--                             정보~               -->
  <!-- ================================================================ -->
<A> 
  <B id="WHAT">
    <one> information </one >
    <two> information </two >
    <three> information  </three >
  </B>

  <B id="how">   
    <one> information </one >
    <two> information </two >
    <three> information </three >
  </B>
</A>

 

 

2. db 연결 부분 

{} 안의 내용을 각자 개별적으로 알아서 수정해야한다. 

(물론 {}도 나중에 삭제해야함!)