如何在 C# 中使用 XmlDocument 写入数字?
How to write a digit using XmlDocument in c#?
我正在尝试创建 XML 文件并向其中写入一些数据。
但是我有一个问题。我不知道如何在此文件中写入值。 (我觉得写一个string
一定可以)
这是我的代码
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);
我的程序工作后必须得到这样的东西:
<Data>
<Block>
<ID>0</ID>
<Name>Rob</Name>
</Block>
<Block>
<ID>1</ID>
<Name>Peter</Name>
</Block>
</Data>
你能帮帮我吗?谢谢
这样使用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");
}
}
输出:
<Data>
<Block>
<ID>0</ID>
<Name>Rob</Name>
</Block>
<Block>
<ID>1</ID>
<Name>Peter</Name>
</Block>
</Data>
我建议你 class 序列化。
创建反映您的数据结构的 classes 并将其序列化。例如,classes 可以是这样的:
[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; }
}
属性 XmlRoot
告诉序列化器如何命名根元素,而 XmlArray
和 XmlArrayItem
控制块列表和块元素将如何序列化。
当您填充 classes 时,只需将它们序列化为 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);
}
结果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>
我正在尝试创建 XML 文件并向其中写入一些数据。
但是我有一个问题。我不知道如何在此文件中写入值。 (我觉得写一个string
一定可以)
这是我的代码
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);
我的程序工作后必须得到这样的东西:
<Data>
<Block>
<ID>0</ID>
<Name>Rob</Name>
</Block>
<Block>
<ID>1</ID>
<Name>Peter</Name>
</Block>
</Data>
你能帮帮我吗?谢谢
这样使用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");
}
}
输出:
<Data>
<Block>
<ID>0</ID>
<Name>Rob</Name>
</Block>
<Block>
<ID>1</ID>
<Name>Peter</Name>
</Block>
</Data>
我建议你 class 序列化。
创建反映您的数据结构的 classes 并将其序列化。例如,classes 可以是这样的:
[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; }
}
属性 XmlRoot
告诉序列化器如何命名根元素,而 XmlArray
和 XmlArrayItem
控制块列表和块元素将如何序列化。
当您填充 classes 时,只需将它们序列化为 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);
}
结果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>