繁体   English   中英

如何在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>

你能帮助我吗? 谢谢。

我建议您对类进行序列化。

创建反映您的数据结构的类并对其进行序列化。 例如,类可以像这样:

[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告诉序列化程序如何命名根元素,而XmlArrayXmlArrayItem控制如何将Blocks列表和Block元素序列化。 当您填充类时,只需将它们序列化为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>

通过以下方式使用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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM