【发布时间】:2017-12-09 11:56:46
【问题描述】:
我有一个 Xml 文件,我想在其中循环每个模块节点,每个模块节点递增 1。这是我的 xml 文件的示例:
<PersonDetails>
<PersonTitle>Teacher</PersonTitle>
<Keystage3>
<Subject>
<subjectName>maths</subjectName>
<subjectId>qq1</subjectId>
<subjectvalue>20</subjectvalue>
<subjectscore />
</Subject>
<Subject>
<subjectName>science</subjectName>
<subjectId>sla1s</subjectId>
<subjectvalue>25</subjectvalue>
<subjectscore />
</Subject>
</Keystage3>
</PersonDetails>
我想遍历 xml 文件并获取两者的所有主题数据
<Subject> 节点并将每个值存储在一个变量中。
我有一段代码从特定节点获取值并输出 它在文本字段上。
这是我目前的代码:
public partial class Form1 : Form
{
private string subName, subId, subvalue;
public XmlDocument Doc;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
XmlTextReader reader = new XmlTextReader("data.xml");
XmlNodeType type;
while (reader.Read()) {
type = reader.NodeType;
if(type == XmlNodeType.Element)
{
if (reader.Name == "subjectName")
{
reader.Read();
textBox1.Text = reader.Value;
}
if (reader.Name == "subjectId")
{
reader.Read();
textBox2.Text = reader.Value;
}
if (reader.Name == "subjectvalue")
{
reader.Read();
textBox3.Text = reader.Value;
}
}
}
reader.Close();
}
我怎样才能使收到的输出类似于:
{maths,qq1,20}
{science,sla1s,25}
【问题讨论】:
-
非常不幸的是,主题节点会像这样递增,而不是将数字作为属性或子元素。我认为您无法控制该 xml 的生成方式?
-
我已经定制了它,以便每次写入主题节点时,值都会增加 1。我怎样才能使每个主题节点都可以在节点内有一个属性来显示数字?
-
我不知道您是如何创建 XML 但任何 XML API 都将支持属性。
标签: c# xml nodes xmlnode xmltextreader