gpt4 book ai didi

c# - 从 xml 中获取值(4 级)

转载 作者:数据小太阳 更新时间:2023-10-29 02:45:49 26 4
gpt4 key购买 nike

帮助获取xml中各个层次的值。

这是 xml:

<widgets>
<id>95</id>

<widget type="1" name="accventas" caption="Ofertas ventas" flags="4">
<service name="pm_venofer_total00001" caption="Pendientes de aceptar" desc="" type="3" detail="1">
<xvalue>20</xvalue>
<xcolor>1</xcolor>
</service>
</widget>

<widget type="3" name="today_state" caption="Estado de ventas" flags="4">
<service name="pd_today_orders00001" caption="Pedidos" desc="Nº pedidos del día" type="3" detail="1">
<xvalue>0</xvalue>
<xcolor>2</xcolor>
<xalert>No se está vendiendo nada</xalert>
</service>

<service name="pd_today_sales00001" caption="Importe" desc="Importe ventas del día" type="3" detail="1">
<xvalue>0,00</xvalue>
<xcolor>2</xcolor>
<xalert>No estamos recaudando nada</xalert>
</service>
</widget>
</widgets>

加载了xml并准备试用,但我无法获取您需要的所有字段

我需要:

  • 身份证,
  • 小部件的标题属性,
  • 每个小部件的服务,
  • 服务的标题属性,
  • x 值,
  • xcolor 和 xalert,
  • 每项服务

我得到所有的小部件,像这样:(我认为有两种:EmployeesEmployee)

[XmlRoot("widgets")]
public class Employees
{
[XmlElement("widget")]
public ObservableCollection <Employee> Coleccion { get; set; }
}


public class Employee
{
[XmlAttribute("caption")]
public string nombreWidget { get; set; }
}

但不像在每个小部件内部获取它们各自的服务(服务属性),以及在这些 xValue、xcolor 和 xalert 中

最佳答案

LinqToXml 解决方案:

var xml = XDocument.Parse(Resource1.XMLFile1).Root;
var parsed = new {
Id = xml.Element("id").Value,
Widgets = xml.Elements("widget")
.Select(w => new
{
Caption = w.Attribute("caption").Value,
Services = w.Elements("service").Select(s => new
{
Caption = s.Attribute("caption").Value,
XColor = s.Element("xcolor").Value,
XValue = s.Element("xvalue").Value,
XAlert = s.Element("xalert") != null ? s.Element("xalert").Value : null
}).ToList()
}).ToList()
};

它将创建代表您的输入 XML 的匿名对象。您可以轻松地将我代码中的匿名对象替换为您的真实域对象(Employees 等)。

关于c# - 从 xml 中获取值(4 级),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13911516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com