我必须将数据保存到XML文件中,数据存储在4个数组和2个int中。我必须使用每个数组中的相同元素(Ex candTur1[0]
with votTur1[0]
)
我尝试过使用此代码:
XDocument document = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("alegeri",
new XElement("tur",
new XElement("nrtur", 1),
for (int i = 0; i < candTur1.Length; i++)
{
new XElement("candidat",
new XElement("nume", candTur1[i]),
new XElement("voturi",votTur1[i] ),
new XElement("procent",((votTur1[i] * 100) / votanti)) );
};
);
);
document.Save("People.xml");
所有数组都具有相同的长度,XML应如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<alegeri>
<tur>
<nrtur>1</nrtur>
<alegatori>2341</alegatori>
<candidat>
<nume>Ion</nume>
<voturi>50</voturi>
<procentaj>50</procentaj>
</candidat>
</tur>
<tur>
<nrtur>2</nrtur>
<alegatori>2341</alegatori>
<candidat>
<nume>Ion</nume>
<voturi>50</voturi>
<procentaj>50</procentaj>
</candidat>
</tur>
</alegeri>
谢谢!
答案 0 :(得分:2)
你可以这样做:
XDocument document = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("alegeri",
Enumerable.Range(1,2).Select(i =>
new XElement("tur",
new XElement("nrtur", i),
candTur1.Select((s, index) =>
new XElement("candidat",
new XElement("nume", candTur1[index]),
new XElement("voturi",votTur1[index] ),
new XElement("procent",((votTur1[index] * 100) / votanti)) ))))));
我不知道数组的外观,但是这段代码假定所有数组的长度相同。
答案 1 :(得分:2)
要扩展@HåkanFahlstedt的答案,XElement
可以接受IEnumerable
个子元素。因此,只要您可以创建一系列子元素,就可以将其传递给您想要的任何元素。
因此,要重写您的示例,我首先可以使用循环遍历数组的方法:
private IEnumerable<XElement> GetArraySequence()
{
for (int i = 0; i < candTur1.Length; i++)
{
yield return new XElement("candidat",
new XElement("nume",candTur1[i]),
new XElement("voturi",votTur1[i] ),
new XElement("procent", ((votTur1[i] * 100) / votanti))
);
};
}
然后您可以按如下方式创建XML文档:
XDocument document = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("alegeri",
new XElement("tur",
new XElement("nrtur", 1)),
GetArraySequence()
));