의 번호가 자식 노드를 읽고 그래서 currentlty이 같은 보이는 XML 파일을 구문 분석하려고 해요 :XML 파일 읽기 - 하위 노드
<employees>
<employee>
<id>1</id>
<projects>
<projectID>7</projectID>
<projectID>3</projectID>
</projects>
</employee>
<employee>
<id>2</id>
<projects>
<projectID>4</projectID>
</projects>
</employee>
</employees>
나는 각 직원 읽을려고하고 나타나는 프로젝트 수에 제한이 없습니다. Employee 객체는 문자열 및 목록 (int)입니다.
현재 내가 가진 : XML 파일 자체가 문제가 XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNodeList xmlNodes = doc.DocumentElement.SelectNodes("/employees/employee");
foreach (XmlNode xmlNode in xmlNodes)
{
string id;
List<int> projects = new List<int>();
id = xmlNode.SelectSingleNode("id").InnerText;
//this is the bit. What I have works but it feels like it could
//be majorly refined. Is there a better way to construct the foreach below?
foreach (XmlNode node in xmlNode.ChildNodes.Item(1))
//index 1 is the projects node
{
projects.Add(int.Parse(node.InnerText));
}
//
Employee e = new Employee(id, projects);
e.Add(e);
}
경우는 구문 분석을 수용하기 위해 변경 될 수 있습니다.
감사합니다.
XmlDocument를 사용해야합니까? 일반적으로 LINQ to XML (XDocument 등)을 사용하면 작업이 훨씬 간단 해집니다. –
무엇을 수정하고 싶습니까? 성능상의 문제가 있습니까, 아니면 코드가 어떻게 보이는지 맘에 들지 않습니다. –
XMLDocument를 사용하는 경우 열거자를 사용하고 각 노드를 살펴볼 수 있습니다. 예를 들어, - XmlNodeList xmlNodes = doc.DocumentElement.SelectNodes ("/ employees/employee"); IEnumerator enumList = doc.GetEnumerator() 다음 루프를 통해 – HappyLee