C# XML다루기2) XML 특정 조건일 때 특정 값 수정 하기 (Modify)
2021. 2. 24. 11:34ㆍC#
728x90
반응형
아래와 같은 xml이 존재할 때
GUID와 일치하는 GUID의 메모 내용을 수정하고 싶다면
Memo Element의 하위 Element 인
GUID 의 Attribute를 이용하여
if문으로 비교하여
content 내용을 수정하고자 하는 예제 입니다.
이미 존재 하는 xml ------- 두 번째 메모의 content 내용을 바꾸고 싶다.
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<MemoLists>
<Memo>
<GUID value="687cd511-fa66-42ea-bce4-1cf50760d180" />
<memo_title>Untitle-01</memo_title>
<content>아무내용</content>
</Memo>
<Memo>
<GUID value="e8918ff3-9360-4e43-a5b9-d545831277ab" />
<memo_title>Untitle-01</memo_title>
<content>아무내용</content>
</Memo>
<Memo>
<GUID value="2fed3902-6edf-4d2a-bca5-95e3ca0b6fb6" />
<memo_title>Untitle-01</memo_title>
<content>아무내용</content>
</Memo>
</MemoLists>
수정 버튼을 눌렀을 때 값이 수정 되도록 이벤트에 연결
/// <summary>
/// XML 수정하기
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
// xml 존재 하는지 ? result : _blexist value return
if (_IsExistXML() == true)
{
XMLModify();
}
else
{
MessageBox.Show("경로에 XML 파일이 없습니다.");
}
}
실제 xml 수정하는 코드
private void XMLModify()
{
XDocument doc = XDocument.Load(_strXMLPath);
var nodes = doc.Root.XPathSelectElements("//MemoLists//Memo").ToList();
for (int i = 0; i < nodes.Count; i++)
{
if (nodes[i].Element("GUID").Attribute("value").Value.ToString() == "e8918ff3-9360-4e43-a5b9-d545831277ab")
{
nodes[i].Element("content").Value = "new value";
}
}
doc.Save(_strXMLPath);
}
최종 결과 물
728x90
반응형
'C#' 카테고리의 다른 글
.Net Core(닷넷 코어) 패키지 버전 가져오기 (0) | 2022.03.03 |
---|---|
MD5를 통한 Checksum 자동화 [C#] (0) | 2022.02.05 |
C# XML다루기1) XML Element 추가 작성하기 (Write) (0) | 2021.02.24 |
(C#,VB.NET) TextBox Password 형식 / TextBox 입력 수 제한 (0) | 2021.02.01 |
(C#,VB.NET) 해결법 AsEnumerable은 DataTable의 멤버가 아닙니다. (1) | 2021.02.01 |