这是我第一次编写XML文件而我想创建一个支持在xml文件中注册的应用程序。 对于数据库中的第一个人,我编写了以下代码:
if (!File.Exists("clienti.xml"))
{
MemoryStream memStream = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(memStream, Encoding.UTF8);
writer.Formatting = Formatting.Indented;
using (writer)
{
writer.WriteStartDocument();
writer.WriteStartElement("clienti");
writer.WriteStartElement("client" numarClienti.ToString());
numarClienti++;
writer.WriteStartElement("cnp");
writer.WriteValue(textBox1.Text);
writer.WriteEndElement();
writer.WriteStartElement("nume");
writer.WriteValue(textBox2.Text);
writer.WriteEndElement();
writer.WriteStartElement("prenume");
writer.WriteValue(textBox3.Text);
writer.WriteEndElement();
writer.WriteStartElement("email");
writer.WriteValue(textBox4.Text);
writer.WriteEndElement();
writer.WriteStartElement("parola");
writer.WriteValue(textBox5.Text);
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
}
writer.Close();
string xml = Encoding.UTF8.GetString(memStream.ToArray());
memStream.Close();
StreamWriter sw = new StreamWriter("clienti.xml");
sw.WriteLine(xml);
sw.Close();
}
当第二个人试图注册时出现问题。我试图用if的第一个子句中使用的类编写代码,但我不能。 这是我的解决方案:
{
XDocument doc = XDocument.Load("clienti.xml");
XElement nodPersoanaNoua = new XElement("client1");
nodPersoanaNoua.Add(new XElement("nume"),new XAttribute("nume","Ionica"),new XElement("nume","georgica"));
doc.Descendants("clienti").Single().Add(nodPersoanaNoua);
doc.Save("clienti.xml");
}
My problem is that in my document a tag like <tag/>.
<client1 nume="Ionica">
<nume />
<nume>georgica</nume>
</client1>.
为什么它看起来像这样?是否在第一个分支中编写第二个分支的方法是什么?
答案 0 :(得分:0)
new XElement("nume")
创建一个名为nume
的空元素,此类空元素的标记表示为<nume/>
或<nume></nume>
或<nume />
。您没有解释您想要的结果,但是您使用new XElement("nume","georgica")
的其他方法创建了包含文字内容<nume>georgica</nume>
的元素。