【发布时间】: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怎么样?容易得多...