카테고리 없음

[씨#] 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));
                                
-------------------

더 많은 정보가 필요하다고 생각합니다 ...

언뜻보기에 다음을 수행해야 할 것 같습니다.

  1. 텍스트 상자 및 / 또는 UpDown 목록의 값을 반복 / 루프합니다.
  2. 루프에 "int counter = 1"루프 외부에서 생성 된 카운터 변수가 있는지 확인하십시오.
  3. 반복하는 각 항목에 대해 카운터를 사용하여 생성중인 xml에 ID를 설정하십시오.
  4. 항목이 다시 반복되기 전에 카운터 + 1을 증가시켜야합니다.

어쨌든 올바른 값으로 각 노드를 자동으로 채울 것입니까?

이 카운터 변수를 추가하기 만하면 기본적으로 필요한 것이 있어야합니다.

-------------------

프로그램을 실행하는 동안 XML에서 노드를 제거하면 Id를 확인하기 위해 계수를 사용하면 제대로 작동하지 않을 수 있습니다.

사용 Guid.NewGuid()된 고유 ID를 생성하는 대신



출처
https://stackoverflow.com/questions/22050174