如何读取XML元素c#(提供了示例代码)
我有下面的XML示例,我想读取数据。我只提供了一个“project”元素,但在“projects”根目录中可以有许多“project”如何读取XML元素c#(提供了示例代码),c#,xml,C#,Xml,我有下面的XML示例,我想读取数据。我只提供了一个“project”元素,但在“projects”根目录中可以有许多“project” Pt144 2014-02-04T00:00:00+00:00 链接 指南 2015-08-04T00:00:00+00:00 链接 指南 我可以阅读和,但不能阅读和。我不确定我遗漏了什么,或者我的XML结构是否正确。我的代码如下: [Serializable] [XmlRoot("projects")] public class BulkP
Pt144
2014-02-04T00:00:00+00:00
链接
指南
2015-08-04T00:00:00+00:00
链接
指南
我可以阅读
和
,但不能阅读
和
。我不确定我遗漏了什么,或者我的XML结构是否正确。我的代码如下:
[Serializable]
[XmlRoot("projects")]
public class BulkProjectRoot
{
public BulkProjectRoot()
{
BulkProjectDetails = new List<BulkProjectData>();
}
[XmlArray("project")]
[XmlArrayItem("details")]
public List<BulkProjectData> BulkProjectDetails { get; set; }
}
[Serializable]
[XmlRoot("details")]
public class BulkProjectData
{
public BulkProjectData()
{
ProjectResearches = new List<ProjectResearchOutputs>();
}
[XmlElement("projectName")]
public string Name { get; set; }
[XmlElement("uniqueID")]
public string ProjectUniqueId { get; set; }
[XmlElement("researchOutputList")]
public List<ProjectResearchOutputs> ProjectResearches { get; set; }
}
[Serializable]
[XmlRoot("researchOutputList")]
public class ProjectResearchOutputs
{
public ProjectResearchOutputs()
{
ResearchItemsList = new List<ResearchOutputItems>();
}
[XmlElement("item")]
public List<ResearchOutputItems> ResearchItemsList { get; set; }
}
[Serializable]
[XmlRoot("item")]
public class ResearchOutputItems
{
[XmlElement("pubDate")]
public DateTime? PublishDate { get; set; }
[XmlElement("title")]
public string ResearchTitle { get; set; }
[XmlElement("link")]
public string ResearchLink { get; set; }
[XmlElement("guid")]
public string ResearchGuid { get; set; }
[XmlElement("description")]
public string ResearchDescription { get; set; }
}
[可序列化]
[XmlRoot(“项目”)]
公共类BulkProjectRoot
{
公共根目录
{
BulkProjectDetails=新列表();
}
[XmlArray(“项目”)]
[XmlArrayItem(“详细信息”)]
公共列表项目详细信息{get;set;}
}
[可序列化]
[XmlRoot(“详细信息”)]
公共类数据
{
公共数据
{
ProjectResearches=新列表();
}
[XmlElement(“项目名称”)]
公共字符串名称{get;set;}
[XmlElement(“唯一标识”)]
公共字符串ProjectUniqueId{get;set;}
[XmlElement(“研究输出列表”)]
公共列表{get;set;}
}
[可序列化]
[XmlRoot(“研究输出列表”)]
公共类项目研究输出
{
公共项目研究产出()
{
ResearchItemsList=新列表();
}
[XmlElement(“项目”)]
公共列表ResearchItemsList{get;set;}
}
[可序列化]
[XmlRoot(“项目”)]
公共类研究输出项
{
[XmlElement(“发布日期”)]
publicDateTime?PublishDate{get;set;}
[XmlElement(“标题”)]
公共字符串ResearchTitle{get;set;}
[XmlElement(“链接”)]
公共字符串研究链接{get;set;}
[XmlElement(“guid”)]
公共字符串研究GUID{get;set;}
[XmlElement(“描述”)]
公共字符串ResearchDescription{get;set;}
}
reasearchlist可以用Linqpad反序列化,但是您在BulkProjectData
类中缺少协作信息
void Main()
{
var xml = @"<?xml version=""1.0"" encoding=""utf - 8""?>
<projects>
<project>
<details>
<projectName><![CDATA[CxWtGZxYT]]></projectName>
<uniqueID> Pt144 </uniqueID>
<collaboratingList>
<collaboratingOrganisation id = ""5318"" value = ""EpCyxCv RvGxrXAYXGpA xCxWtGZxYT"" />
<collaboratingOrganisation id = ""0000"" value = ""EpCyxCv RvGxrXAYXGpA xCxWtGZxYTd"" />
</collaboratingList>
<researchOutputList>
<item>
<pubDate>2014-02-04T00:00:00+00:00</pubDate>
<title><![CDATA[rGDEZ]]></title>
<link> link </link>
<guid> guid </guid>
<description><![CDATA[uGDB BDstA rGDEZ]]></description>
</item>
<item>
<pubDate>2015-08-04T00:00:00+00:00</pubDate>
<title><![CDATA[AERx CApCYZ.]]></title>
<link> link </link>
<guid> guid </guid>
<description><![CDATA[vwtpY]]></description>
</item>
</researchOutputList>
</details>
</project>
</projects>";
var serializer = new XmlSerializer(typeof(BulkProjectRoot));
var result = (BulkProjectRoot)serializer.Deserialize(new StringReader(xml));
result.Dump();
void Main()
{
var xml=@”
Pt144
2014-02-04T00:00:00+00:00
链接
指南
2015-08-04T00:00:00+00:00
链接
指南
";
var serializer=新的XmlSerializer(typeof(BulkProjectRoot));
var result=(BulkProjectRoot)序列化程序。反序列化(新的StringReader(xml));
result.Dump();
Jsut进行此更改-
[Serializable]
[XmlRoot("details")]
public class BulkProjectData
{
public BulkProjectData()
{
// Not a list
ProjectResearches = new ProjectResearchOutputs();
}
[XmlElement("projectName")]
public string Name { get; set; }
[XmlElement("uniqueID")]
public string ProjectUniqueId { get; set; }
[XmlElement("researchOutputList")]
public ProjectResearchOutputs ProjectResearches { get; set; }
}
我有代码,但无法将其粘贴到此处。抱歉。感谢您的回复。Amit Kumar Ghosh,我已经更改了该行,但仍然没有返回Research OutputList。列表计数为0。这也是正确的,我只需实现iClonable即可获取数据。
[Serializable]
[XmlRoot("details")]
public class BulkProjectData
{
public BulkProjectData()
{
// Not a list
ProjectResearches = new ProjectResearchOutputs();
}
[XmlElement("projectName")]
public string Name { get; set; }
[XmlElement("uniqueID")]
public string ProjectUniqueId { get; set; }
[XmlElement("researchOutputList")]
public ProjectResearchOutputs ProjectResearches { get; set; }
}