카테고리 없음
[씨#] XML 파일의 ID 값 자동 증가
행복을전해요
2021. 2. 6. 07:54
이를 LINQ to XML
위해 사용할 수 있습니다. 먼저 현재 요소 수를 가져온 다음 다음과 같이 새 요소를 삽입합니다.
var xDoc = XDocument.Load("path");
var count = xDoc.Descendants("user").Count();
var newUser = new XElement("user",
new XElement("id", count+1),
new XElement("name", nameBox.Text),
new XElement("surname", surnameBox.Text),
new XElement("weight", weightUpDown.Value),
new XElement("height", heightUpDown.Value));
xDoc.Root.Add(newUser);
xDoc.Save(path);
먼저 요소 개수를 얻은 다음 (Form_load에있을 수 있음) 변수에 저장하는 것이 좋습니다. 이렇게하면 새 항목을 추가 할 때마다이 쿼리를 수행 할 필요가 없습니다. 개수를 늘리기 만하면됩니다.
-------------------다음과 같이 최대 ID를 얻을 수 있습니다.
var maxId = xmlDoc.SelectNodes("/users/user/id")
.Cast<XmlNode>()
.Max(node => int.Parse(node.InnerText));
-------------------더 많은 정보가 필요하다고 생각합니다 ...
언뜻보기에 다음을 수행해야 할 것 같습니다.
- 텍스트 상자 및 / 또는 UpDown 목록의 값을 반복 / 루프합니다.
- 루프에 "int counter = 1"루프 외부에서 생성 된 카운터 변수가 있는지 확인하십시오.
- 반복하는 각 항목에 대해 카운터를 사용하여 생성중인 xml에 ID를 설정하십시오.
- 항목이 다시 반복되기 전에 카운터 + 1을 증가시켜야합니다.
어쨌든 올바른 값으로 각 노드를 자동으로 채울 것입니까?
이 카운터 변수를 추가하기 만하면 기본적으로 필요한 것이 있어야합니다.
-------------------프로그램을 실행하는 동안 XML에서 노드를 제거하면 Id를 확인하기 위해 계수를 사용하면 제대로 작동하지 않을 수 있습니다.
사용 Guid.NewGuid()
된 고유 ID를 생성하는 대신
출처
https://stackoverflow.com/questions/22050174