在xdocument中获取节点属性

时间:2013-07-24 11:31:11

标签: c# .net xml linq

我有xml文档,它将是动态的。我没有问题获取节点,但我想让每个节点的属性。 我试过的一切都没有得到我的结果。

我的Xml:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <Questionnaire>   <clientID>1036</clientID>   <QuestForm Desc="דוגמא" ID="1" Info="הסבר לגבי השאלון לדוגמא">
    <Subject Desc="כללי" ID="1" Info="הסבר לנושא כללי" NP="N" Num="1" TableRows="3">
      <Title Desc="מופע 1" ID="1"></Title>
      <Title Desc="מופע 2" ID="2"></Title>
      <Title Desc="מופע 3" ID="3"></Title>
      <Question Desc="טקסט חופשי" ID="1" Type="ט"></Question>
      <Question Desc="תאריך" FromDate="00/00/0000" ID="2" ToDate="31/12/2999" Type="ת"></Question>
      <Question Desc="שעה" FromTime="00:00:00" ID="3" ToTime="24:00:00" Type="ש"></Question>
      <Question Desc="מספר" FromN="1.00" ID="4" IntN="0.00" ToN="10.00" Type="מ"></Question>
      <Question Desc="בחירה" ID="5" Type="ב">
        <Answer Desc="תשובה 1" ID="1"></Answer>
        <Answer Desc="תשובה 2" ID="2"></Answer>
      </Question>
      <Question Desc="שפות דיבור בחירה מרובה" ID="6" Type="ר">
        <Answer Desc="עברית" ID="1"></Answer>
        <Answer Desc="אנגלית" ID="2"></Answer>
        <Answer Desc="רוסית" ID="3"></Answer>
      </Question>
    </Subject>
    <Subject Desc="חו&quot;ל" ID="2" Info="הסבר לנושא חול" NP="N" Num="2">
      <Question Desc="נסיעות לחול" FromN="0.00" ID="1" IntN="0.00" ToN="0.00" Type="מ"></Question>
      <Question Desc="מדינות מועדפות" ID="2" Type="ר">
        <Answer Desc="ארצות הברית" ID="1"></Answer>
        <Answer Desc="אנגליה" ID="2"></Answer>
        <Answer Desc="אוסטרליה" ID="3"></Answer>
        <Answer Desc="רוסיה" ID="4"></Answer>
      </Question>
    </Subject>
    <Subject Desc="נושא חברתי" ID="3" NP="N" Num="3">
      <Question Desc="כמה חברים יש לך" FromN="1.00" ID="1" IntN="0.00" ToN="100.00" Type="מ"></Question>
      <Question Desc="באיזה רשת חברתית אתה משתמש" ID="2" Type="ר">
        <Answer Desc="FACEBOOK" ID="1"></Answer>
        <Answer Desc="LINKEDIN" ID="2"></Answer>
        <Answer Desc="TWITER" ID="3"></Answer>
      </Question>
      <Question Desc="נולדת בארץ" ID="3" Type="ל"></Question>
      <Question CondID="3" Desc="ישוב לידה" ID="4" Type="ט"></Question>
    </Subject>   </QuestForm>
    <Muamad Email="ORANI4U@GMAIL.COM" Event="28" ID="36130" Name="א אורן"></Muamad>

</Questionnaire>

我希望获得所有主题及其属性的代码:

IEnumerable<QuestionnnaireSubject> subjects = from input in xml.Descendants("Subject")
    select new QuestionnnaireSubject()
    {                                         
        Description = 
        ID = 
    }; 
return subjects.ToList();

1 个答案:

答案 0 :(得分:2)

要获取元素的属性,请使用XElement.Attribute(XName) ou XElement.Attributes()

var subjects = from subjectElement in xml.Descendants("Subject")
               select new QuestionnnaireSubject()
               {                                         
                   Description = (string)subjectElement.Attribute("Desc")
                   ID = (int)subjectElement.Attribute("ID").Value
               }; 

使用:

您还有: