我正在学习C#,我需要一些建议。
我正在尝试从XML文件创建用户(Active Directory)。这些用户是学生和教师。对于每个用户,我需要名称,姓氏,生日日期以生成登录,密码
我需要的所有信息都在XML中。
在powershell中,它的工作原理如下:
tab[name,surname,birthdate,login,group]
(也适用于
C#)tab[name,surname,birthdate,login,tab[groups]]
我如何在C#中执行此操作?我尝试使用3D中的数组但是它丑陋且不太高效,有数百名用户...... 使用列表有更好的方法吗? ArrayList?
抱歉英语不好......
感谢您的帮助(以及代码^^)!
教师的XML示例:
<DATA>
-<PERSONS>
--<PERSON ID="6022">
---<NAME>DOE</NAME>
---<SURNAME>John</SURNAME>
---<BIRHDATE>1952-06-29</DATE_NAISSANCE>
--</PERSON>
--...
-</PERSONS>
-<CLASSES>
--<CLASS CODE="3A">
---<TEACHERS>
----<TEACHER ID="6022">
-----<SUBJECT>Maths</SUBJECT>
----</TEACHER>
---</TEACHERS>
--</CLASS>
--<CLASS CODE="5D">
---<TEACHERS>
----<TEACHER ID="6022">
-----<SUBJECT>Maths</SUBJECT>
----</TEACHER>
---</TEACHERS>
--</CLASS>
...
-</CLASSES>
</DATA>
答案 0 :(得分:4)
您可能需要查看XDocument。
您可以致电XDocument.Parse("<myDoc></myDoc>")
示例:强>
var xml = @"<DATA>
<PERSONS>
<PERSON ID=""6022"">
<NAME>DOE</NAME>
<SURNAME>John</SURNAME>
<BIRHDATE>19520629</BIRHDATE>
</PERSON>
</PERSONS>
<CLASSES>
<CLASS CODE=""3A"">
<TEACHERS>
<TEACHER ID=""6022"">
<SUBJECT>Maths</SUBJECT>
</TEACHER>
</TEACHERS>
</CLASS>
<CLASS CODE=""5D"">
<TEACHERS>
<TEACHER ID=""6022"">
<SUBJECT>Maths</SUBJECT>
</TEACHER>
</TEACHERS>
</CLASS>
</CLASSES>
</DATA>";
var doc = XDocument.Parse(xml);
var peopleElements = doc
.Elements("DATA")
.Elements("PERSONS")
.Elements("PERSON");
var q = from person in peopleElements
select new {
Name = person.Element("NAME").Value,
BirthDate = person.Element("BIRHDATE").Value
};
var peopleList = q.ToList();
答案 1 :(得分:0)
我不完全确定你在寻找什么:你现在正在做什么,想要改变一个阵列?你是在谈论每个人只是阵列中的一串字符串吗?根据你的陈述,你应该真正创建一个Person类,其中包含学生和教师共享的属性,然后是另外两个类,Student和Teacher,都继承自该类。那时,在Student上使用Class字符串属性而不是单个Group属性是有意义的,并且ClassesTaught List&lt;字符串&gt;老师的财产。 3d数组非常适合最好用3d数组表示的内容(例如,在3d空间中指向),但对于有组织的数据列表,最好将数据实际组织到类中属性。
此时,您将所有数据解析为单个Person对象,并将它们添加到List&lt;人&gt;。 (或者,如果你喜欢,取决于你正在做什么,可能是一个Dictionary&lt; int,Person&gt;,如果那个ID属性实际上是一个唯一的标识符,你希望通过该id键轻松访问你的Person对象。)
答案 2 :(得分:0)
ArrayList的用例确实不多。如果你能帮助的话,避免它和它不断铸造和重铸的伴侣。