如何读取XML元素c#(提供了示例代码)

如何读取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

我有下面的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 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; } 
}