【问题标题】:How can I map a List from XML with LinQ by Attributes?如何通过属性将 XML 中的列表与 LinQ 映射?
【发布时间】:2022-09-27 20:41:57
【问题描述】:

我正在尝试从 XML 文件中使用 LinQ 映射列表,如下所示:

            <Resultado NumRegistros=\"4\">
            <Registro>
                <Campo Nombre=\"num_empleado\">1234567</Campo>
                <Campo Nombre=\"nom_completo\">SOMETHING</Campo>
                <Campo Nombre=\"SERIE\">5CG4520WZ6</Campo>
                <Campo Nombre=\"ETIQ_INVENTARIO\">959320</Campo>
                <Campo Nombre=\"EQUIPO\">LAPTOP</Campo>
                <Campo Nombre=\"MARCA\">HP</Campo>
                <Campo Nombre=\"MODELO\">ELITEBOOK 9480M</Campo>
            </Registro>
            <Registro>
                <Campo Nombre=\"num_empleado\">1234567</Campo>
                <Campo Nombre=\"nom_completo\">SOMETHING</Campo>
                <Campo Nombre=\"SERIE\">DMPRN0WSG5WT</Campo>
                <Campo Nombre=\"ETIQ_INVENTARIO\">977846</Campo>
                <Campo Nombre=\"EQUIPO\">IPAD</Campo>
                <Campo Nombre=\"MARCA\">APPLE</Campo>
                <Campo Nombre=\"MODELO\">Air2 WiFiCellular</Campo>
            </Registro>
            <Registro>
                <Campo Nombre=\"num_empleado\">1234567</Campo>
                <Campo Nombre=\"nom_completo\">SOMETHING</Campo>
                <Campo Nombre=\"SERIE\">5CG5233JJZ</Campo>
                <Campo Nombre=\"ETIQ_INVENTARIO\">977880</Campo>
                <Campo Nombre=\"EQUIPO\">LAPTOP</Campo>
                <Campo Nombre=\"MARCA\">HP</Campo>
                <Campo Nombre=\"MODELO\">ELITEBOOK 9480M</Campo>
            </Registro>
            <Registro>
                <Campo Nombre=\"num_empleado\">6004639</Campo>
                <Campo Nombre=\"nom_completo\">SOMETHING</Campo>
                <Campo Nombre=\"SERIE\">PF1LFXSD</Campo>
                <Campo Nombre=\"ETIQ_INVENTARIO\">422345</Campo>
                <Campo Nombre=\"EQUIPO\">LAPTOP</Campo>
                <Campo Nombre=\"MARCA\">LENOVO</Campo>
                <Campo Nombre=\"MODELO\">THINKPAD X1 CARBON </Campo>
            </Registro>
        </Resultado>

我怎样才能映射这个引用属性?我找到了其他示例,但它们指的是元素。

我有一个这样的模型类:

public class Equipo
{
    public string num_empleado { get; set; }
    public string nom_completo { get; set; }
    public string SERIE { get; set; }
    public string ETIQ_INVENTARIO { get; set; }
    public string EQUIPO { get; set; }
    public string MARCA { get; set; }
    public string MODELO { get; set; }
}

我尝试使用此代码,但出现错误:

        var xElements = xmlEquipos.Descendants(\"Registro\");
        var xmlSerializer = new XmlSerializer(typeof(Equipo));
        var lstEquipos = xElements.Select(equipo => (Equipo)xmlSerializer.Deserialize(equipo.CreateReader())).ToList();
  • \"但我有一个错误\" 所以,你得到的错误是\"一个错误\"?仅此而已吗?关于你得到的错误真的没有什么可说的吗?你真的得到了一个错误消息或刚刚说的东西\"发生错误。就是这样,伙计们。\"?(如有任何澄清,请edit 并改进您的问题。不要在 cmets 中提供有关您问题的信息,请输入您的问题。)

标签: c# xml list linq linq-to-xml


【解决方案1】:

尝试以下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;


namespace ConsoleApplication40
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";

        static void Main(string[] args)
        {

            XmlReader reader = XmlReader.Create(FILENAME);
            XmlSerializer serialize = new XmlSerializer(typeof(Resultado));
            Resultado resultado = (Resultado)serialize.Deserialize(reader);


        }
    }
    public class Resultado
    {
        [XmlAttribute()]
        public int NumRegistros {get;set;}
        [XmlElement("Registro")]
        public List<Registro> registro { get; set; } 

    }
    public class Registro
    {
        [XmlElement("Campo")]
        public List<Campo> campo { get; set; }
    }
    public class Campo
    {
        [XmlAttribute()]
        public string Nombre { get; set; }
        [XmlText]
        public string value { get; set; }
    }

 
}

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 2010-11-06
    • 2021-07-13
    • 1970-01-01
    • 2014-09-06
    • 2022-01-01
    • 2013-08-14
    • 2018-09-15
    相关资源
    最近更新 更多