如何在c中获取条件反序列化xml列表#
问题描述:
我想从某些情况下反序列化xml列表中获取数据。但我没有得到任何适当的解决方案。下面是我的代码片段:如何在c中获取条件反序列化xml列表#
public List<LinkInfo> GetLinks(string entityType, string relatedEntityType, string linkType)
{
try
{
XmlSerializer deserializer = new XmlSerializer(typeof(Project));
TextReader reader = new StreamReader(@"E:\\SampleMetaData.xml");
object obj = deserializer.Deserialize(reader);
Project xmlData = (Project)obj;
return xmlData.Module.Links.Link.Select(field => new LinkInfo
{
EntityId = field.EntityId,
EntityType = field.EntityType,
RelatedEntityId = field.RelatedEntityId,
RelatedEntityType = field.RelatedEntityType,
LinkType = field.LinkType
}).ToList();
}
catch(Exception ex)
{
Console.WriteLine("Error in",ex);
throw;
}
}
下面是我的XML文件格式:
<Links>
<Link EntityId="5" EntityType="Doors_Module1" RelatedEntityId="7" RelatedEntityType="Doors_Module2" LinkType="InLink"/>
<Link EntityId="6" EntityType="Doors_Module1" RelatedEntityId="8" RelatedEntityType="Doors_Module2" LinkType="InLink"/>
<Link EntityId="7" EntityType="Doors_Module1" RelatedEntityId="9" RelatedEntityType="Doors_Module2" LinkType="External"/>
</Links>
我要像where LinkType="Inlink" EntityType="Doors_Module1" and RelatedEntityType="Doors_Module2"
我怎样才能做到这一点去取? 感谢高级。
答
return xmlData.Module.Links.Link
.Where(x=>.LinkType == 'Inlink' && x.EntityType == 'Doors_Module1')
.Select(field => new LinkInfo
{
EntityId = field.EntityId,
EntityType = field.EntityType,
RelatedEntityId = field.RelatedEntityId,
RelatedEntityType = field.RelatedEntityType,
LinkType = field.LinkType
}).ToList();
此代码应该为你
+1
谢谢@Arijit Mukherjee,它正如我想要的那样工作....再次感谢您... –
+1
很高兴帮助,不要忘记注册并将其标记为已解决,如果它解决了您的目的 –
我想你是使用XML序列化类工作的权利? 在这种情况下,你可以简单地使用'.Where(x => x.LinkType =='Doors_Module1')' –
你能分享LinkInfo类吗? –
动态对象,你可以使用foreach或for循环'obj。[i] .LinkType'种类关 –