0
我正在試圖查詢一個xml文檔,但是這段代碼沒有讀取帶有封閉標記符號的xml部分,但是讀取的是很好的xelement。任何人都可以發現我做錯了什麼嗎?查詢XML文檔
我有程序生成的XML文件,該文件因此它現在的問題給出了封閉的標記文件..
<?xml version="1.0" encoding="utf-8" ?>
<Student>
<Person name="John" city="Auckland" country="NZ" />
<Person>
<Course>GDICT-CN</Course>
<Level>7</Level>
<Credit>120</Credit>
<Date>129971035565221298</Date>
</Person>
<Person>
<Course>GDICT-CN</Course>
<Level>7</Level>
<Credit>120</Credit>
<Date>129971036040828501</Date>
</Person>
</Student>
class Program
{
static void Main(string[] args)
{
XDocument xDoc = XDocument.Load(AppDomain.CurrentDomain.BaseDirectory + "Customers.xml");
IEnumerable<XElement> rows = from row in xDoc.Descendants("Person") select row;
foreach(XElement xEle in rows)
{
IEnumerable<XAttribute>attlist = from att in xEle.DescendantsAndSelf().Attributes() select att;
foreach(XAttribute xatt in attlist)
{
Console.WriteLine(xatt);
}
Console.WriteLine("-------------------------------------------");
}
Console.ReadLine();
}
}
這就像魅力..我想了解它做什麼區別,可你只是breif我,如果你不介意的話。謝謝。 –
'XAttribute'用於屬性,而'XElement'用於子節點。在第一行中,你已經聲明瞭'name','city'和'country'as屬性。但在接下來的兩行中,你已經創建了子節點,這就是爲什麼你需要遍歷'Descendants'collection來獲取它們的值。 –
謝謝,如果我想過濾下來的值我不能使用下面的過濾器代碼獲取子元素值,你可以檢查以及? IEnumerable rows = from xDoc.Descendants(「Person」)中的行 where(string)row.Attribute(「Level」)==「7」 select row; –