如何在循环中添加同名的节点

本文关键字:节点 添加 循环 | 更新日期: 2023-09-27 18:08:34

我正在尝试创建以下XML文件:

<Clientes>
  <Cliente>
    <Name>sfsdfsd</Name>
    <Phone>
    </Phone>
    <Matriculas>
      <Matricula>
        <Nr>567856786</Nr>
        <Marca>86786</Marca>
        <Modelo>8678678</Modelo>
      </Matricula>
      <Matricula>
        <Nr>u56u5u</Nr>
        <Marca>4564b5</Marca>
        <Modelo>b456b</Modelo>
      </Matricula>
    </Matriculas>
  </Cliente>
</Clientes>

我有几个客户端存储在一个列表中,每个客户端可能有多个矩阵,存储在一个列表

我有以下代码:

foreach (Cliente c in cli)
{
    XmlNode xCliente = xDoc.CreateElement("Cliente");
    XmlNode xName = xDoc.CreateElement("Name");
    XmlNode xPhone = xDoc.CreateElement("Phone");
    XmlNode xMatriculas = xDoc.CreateElement("Matriculas");
    XmlNode xMatricula = xDoc.CreateElement("Matricula");
    XmlNode xNr = xDoc.CreateElement("Nr");
    XmlNode xMarca = xDoc.CreateElement("Marca");
    XmlNode xModelo = xDoc.CreateElement("Modelo");
    xName.InnerText = c.Name;
    xPhone.InnerText = c.Phone;
    xCliente.AppendChild(xName);
    xCliente.AppendChild(xPhone);
    foreach (Matricula m in c.matricula)
    {
        xNr.InnerText = m.nr;
        xMarca.InnerText = m.marca;
        xModelo.InnerText = m.modelo;
        xMatricula.AppendChild(xNr);
        xMatricula.AppendChild(xMarca);
        xMatricula.AppendChild(xModelo);
        xMatriculas.AppendChild(xMatricula);
    }
    xCliente.AppendChild(xMatriculas);
    xDoc.DocumentElement.AppendChild(xCliente);
}

我可以在根目录中添加多个客户端,但只添加matricas中的最后一个matricas。

如何在循环中添加同名的节点

Move

 XmlNode xMatricula = xDoc.CreateElement("Matricula");
 XmlNode xNr = xDoc.CreateElement("Nr");
 XmlNode xMarca = xDoc.CreateElement("Marca");
 XmlNode xModelo = xDoc.CreateElement("Modelo");

您正在重用完全相同的节点,您需要每次在文档中创建一个新节点时创建一个新节点。