[英]How to write a digit using XmlDocument in c#?
I am trying to create XML file and write some data to it. 我正在尝试创建XML文件并向其中写入一些数据。
But I have a problem. 但是我有一个问题。 I do not know how to write a value in this file. 我不知道如何在此文件中写入值。 (I think writing a string
must be OK) (我认为写一个string
一定可以)
Here is my code 这是我的代码
XmlDocument doc = new XmlDocument();
XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
XmlElement root = doc.DocumentElement;
doc.InsertBefore(xmlDeclaration, root);
XmlElement element1 = doc.CreateElement(string.Empty, "Data", string.Empty);
doc.AppendChild(element1);
for (int i = 0; i < Program.Number; ++i)
{
XmlElement element2 = doc.CreateElement(string.Empty, "Block", string.Empty);
doc.AppendChild(element2);
XmlElement element3 = doc.CreateElement(string.Empty, "ID", string.Empty);
element3.AppendChild(i); //Compilator gives error there
element2.AppendChild(element3);
XmlElement element4 = doc.CreateElement(string.Empty, "Name", string.Empty);
XmlText text2 = doc.CreateTextNode(Colegue<string>.Name[i]);
element4.AppendChild(text2);
element2.AppendChild(element4)
}
doc.Save(Program.FileName);
I must get something like this after work of my program: 我的程序完成后,我必须得到这样的东西:
<Data>
<Block>
<ID>0</ID>
<Name>Rob</Name>
</Block>
<Block>
<ID>1</ID>
<Name>Peter</Name>
</Block>
</Data>
Can you help me? 你能帮助我吗? Thanks. 谢谢。
I would suggest you class serialization. 我建议您对类进行序列化。
Make classes that reflect your data structure and serialize it. 创建反映您的数据结构的类并对其进行序列化。 For example, classes can be like this: 例如,类可以像这样:
[Serializable]
[XmlRoot("Data")]
public class Data
{
[XmlArray("Blocks")]
[XmlArrayItem("Block")]
public List<Block> Blocks { get; set; }
}
[Serializable]
public class Block
{
public string Name { get; set; }
public int ID { get; set; }
}
Attribute XmlRoot
tells serializer how to name root element while XmlArray
and XmlArrayItem
control how will list of Blocks and Block element will be serialized. 属性XmlRoot
告诉序列化程序如何命名根元素,而XmlArray
和XmlArrayItem
控制如何将Blocks列表和Block元素序列化。 When you fill your classes, just serialize them to xml. 当您填充类时,只需将它们序列化为xml。
Data data = new Data();
data.Blocks = new List<Block>();
data.Blocks.Add(new Block() { ID = 0, Name = "Rob" });
data.Blocks.Add(new Block() { ID = 1, Name = "Peter" });
data.Blocks.Add(new Block() { ID = 2, Name = "Mary" });
XmlSerializer xs = new XmlSerializer(typeof(Data));
using (FileStream stream = new FileStream("c:\\test.xml", FileMode.Create))
{
xs.Serialize(stream, data);
}
resulting XML 产生的XML
<?xml version="1.0"?>
<Data xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Blocks>
<Block>
<Name>Rob</Name>
<ID>0</ID>
</Block>
<Block>
<Name>Peter</Name>
<ID>1</ID>
</Block>
<Block>
<Name>Mary</Name>
<ID>2</ID>
</Block>
</Blocks>
</Data>
Use XmlDocument
this way: 通过以下方式使用XmlDocument
:
class Program
{
static List<string> Colleagues = new List<string>() { "Rob", "Peter"};
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
XmlNode rootNode = doc.CreateElement("Data");
doc.AppendChild(rootNode);
for (int i = 0; i < 2; i++)
{
XmlNode blockNode = doc.CreateElement("Block");
XmlNode idNode = doc.CreateElement("ID");
idNode.InnerText = i.ToString();
blockNode.AppendChild(idNode);
XmlNode nameNode = doc.CreateElement("Name");
nameNode.InnerText = Colleagues[i];
blockNode.AppendChild(nameNode);
rootNode.AppendChild(blockNode);
}
doc.Save("XmlDocument.xml");
}
}
Output: 输出:
<Data>
<Block>
<ID>0</ID>
<Name>Rob</Name>
</Block>
<Block>
<ID>1</ID>
<Name>Peter</Name>
</Block>
</Data>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.