2011-12-02 52 views
1

我正在通過XDocument類閱讀xmlfile。 XML中有名稱空間,如何使用node.Element()以及名稱空間?我試圖創建XNamespace,但它似乎沒有工作..在名稱空間中使用XDocument

的XML如下:

<CueList time="2011-12-02T13:34:39" xmlns="urn:CueListSchema.xml" xmlns:s="urn:schemas-rcsworks-com:SongSchema" xmlns:n="urn:schemas-rcsworks-com:NoteSchema" xmlns:l="urn:schemas-rcsworks-com:LinkSchema" xmlns:t="urn:schemas-rcsworks-com:TrafficSchema" xmlns:p="urn:schemas-rcsworks-com:ProductSchema" xmlns:m="urn:schemas-rcsworks-com:MediaSchema" xmlns:w="urn:schemas-rcsworks-com:WebPageSchema" xmlns:ns="urn:CueListSchema.xml"> 
    <Event eventID="14" eventType="song" status="happening" scheduledTime="13:34:38" scheduledDuration="332.82"> 
    <s:Song title="Long Time Coming (Holding On)" internalID="007700028007AD480000"> 
     <s:Artist name="The Winans" sequenceNumber="1" internalID="0067000180002B020000" sortName="Winans, The" /> 
     <m:Media ID="{7C734B6C-7AF7-4998-8366-F1F11F5D56D7}" runTime="332.82" fileName="{7C734B6C-7AF7-4998-8366-F1F11F5D56D7}.wav" /> 
    </s:Song> 
    </Event> 
    <Event eventID="15" eventType="link" status="committed" startTime="13:40:10" scheduledDuration="3.49"> 
    <l:Link title="PG MFL DRY FEMALE" internalID="007B00028002DAEA0000"> 
     <m:Media ID="{036BB0ED-3130-4AD0-8BAF-E5D0FBA7DC3B}" runTime="3.49" fileName="{036BB0ED-3130-4AD0-8BAF-E5D0FBA7DC3B}.wav" /> 
    </l:Link> 
    </Event> 
    <Event eventID="16" eventType="song" status="committed" startTime="13:40:10" scheduledDuration="303.55"> 
    <s:Song title="Not Making Sense, Making Faith" internalID="007700028009377F0000"> 
     <s:Artist name="Donald Lawrence" sequenceNumber="1" internalID="006700018000308A0000" sortName="Lawrence, Donald" /> 
     <m:Media ID="{B6FD04EA-9B42-4E6A-AC80-A26BF65E6F11}" runTime="303.55" fileName="{B6FD04EA-9B42-4E6A-AC80-A26BF65E6F11}.wav" /> 
    </s:Song> 
    </Event> 
</CueList> 

我從節點循環在foreach,並希望得到的s:Song節點。

回答

3

尼斯和易於使用LINQ使用的XNamespace和加法運算符超載XML:

XNamespace ns = "urn:schemas-rcsworks-com:SongSchema"; 
for (var songElement = doc.Descendants(ns + "Song")) 
{ 
    ... 
} 

命名空間的簡單處理是LINQ到XML最美麗的一個方面。

+0

謝謝我可以看到,這應該工作,是否有可能使用node.Element(ns +「歌」) - 因爲當我這樣做的錯誤... –

+0

@LukeWilkinson:是的,應該沒問題。 「錯誤」是什麼意思?請具體說明。 –

+0

抱歉 - 對象引用未設置爲對象的實例。 –

相關問題