【问题标题】:Looping through my lists to display the information on an .xml循环浏览我的列表以显示 .xml 上的信息
【发布时间】:2016-12-04 04:22:28
【问题描述】:

我正在尝试创建 .xml 的副本,并且需要像这样呈现它(在需要的地方放置信息):

    <FMEA>
      <Component>
        <Name></Name>
          <BasicEvent ID="">
            <Name></Name>
            <ShortName></ShortName>
            <Description></Description>
            <Unavailability></Unavailability>
          </BasicEvent>
          <BasicEvent ID="">
            <Name></Name>
            <ShortName></ShortName>
            <Description></Description>
            <Unavailability></Unavailability>
          </BasicEvent>
          <BasicEvent ID="">
            <Name></Name>
            <ShortName></ShortName>
            <Description></Description>
            <Unavailability></Unavailability>            
          </BasicEvent>
        //And so on...
      </Component>   
    </FMEA>

我确定我的课程是正确的,但我不确定如何循环遍历我创建的列表以将信息放置在正确的位置。我的代码 ID 在下面,非常感谢您提供的任何帮助。谢谢-K

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

namespace ACW
{
class Program
{
    const string FILENAME = @"SmallResults.xml";
    static void Main(string[] args)
    {
        XDocument doc = XDocument.Load(FILENAME);
        FMEA fmea = new FMEA();
        fmea.comps = doc.Descendants("FMEA").Select(x => new Component()
        {
            Name = (string)x.Element("Name"),
            BasicEvent = x.Elements("BasicEvent").Select(y => BasicEvent.FindBasicEvent(y)).ToList()
        }).ToList();
        foreach(Component comp in fmea.comps)
        {
            new XmlSerializer(typeof(Component)).Serialize(Console.Out, comp);
            //I'm sure something goes here... A foreach loop or something...
        }
        Console.ReadKey();
    }
}
public class Component
{
    public string Name { get; set; }
    public List<BasicEvent> BasicEvent { set; get; }
}
public class BasicEvent
{
    public string Name { set; get; }
    public string ShortName { set; get; }
    public string Description { set; get; }
    public string Unavalability { set; get; }

    public static BasicEvent FindBasicEvent(XElement BasicEvent)
    {
        BasicEvent NewBasicEvent = new BasicEvent();
        NewBasicEvent.Name = (string)BasicEvent.Element("Name");
        NewBasicEvent.ShortName = (string)BasicEvent.Element("ShortName");
        NewBasicEvent.Description = (string)BasicEvent.Element("Description");
        NewBasicEvent.Unavalability = (string)BasicEvent.Element("Unavalability");
        return NewBasicEvent;
    }
}
class FMEA
{
    public List<Component> comps { get; set; }
}

}

【问题讨论】:

  • Serializing 你的 FMEA 课程怎么样。 (它可能需要对您的模型进行一些更改)
  • @L.B 对不起,我真的很陌生,这将如何完成??
  • 谷歌c# XmlSerializer
  • 从您的 XML 生成一个 XSD 架构,然后使用 xsd.exe 或 Xsd2Code 将 XSD 架构转换为 C# 类,然后将该类导入您的项目中,在 XmlSerializer 的帮助下,您可以轻松创建您想要的正在做。
  • @Peroxy 使用 VS 的 Edit/Paste Special/Paste Xml as Classes 怎么样?容易得多...

标签: c# xml


【解决方案1】:

复制 xml 有什么困难?

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

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            XDocument duplicate = XDocument.Parse(doc.ToString());
        }
    }
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-10-14
  • 2016-08-08
  • 1970-01-01
  • 2020-01-02
  • 1970-01-01
  • 2018-06-17
  • 1970-01-01
  • 2011-01-22
相关资源
最近更新 更多