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

时间:2016-01-29 06:51:26

标签: c# xml

我有以下XML示例,我想读取数据。我只提供了一个"项目"元素,但这可以有很多"项目"在"项目内#34;根

var email = User.Claims.FirstOrDefault(c => c.Type.Equals(ClaimTypes.Email)).Value;

我可以阅读<?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> <projectName>但不能<uniqueId><researchOutputList>。我不确定我缺少什么,或者我的XML结构是否正确。我的代码如下:

<collaboratingList>

2 个答案:

答案 0 :(得分:1)

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();

enter image description here

答案 1 :(得分:1)

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; } 
}