我確信這是基本的,可能之前曾被問到過,但我只是開始使用Linq到XML。Linq to XML - 找到一個元素
我有一個簡單的XML,我需要讀取和寫入。
<Documents>
...
<Document>
<GUID>09a1f55f-c248-44cd-9460-c0aab7c017c9-0</GUID>
<ArchiveTime>2012-05-15T14:27:58.5270023+02:00</ArchiveTime>
<ArchiveTimeUtc>2012-05-15T12:27:58.5270023Z</ArchiveTimeUtc>
<IndexDatas>
<IndexData>
<Name>Name1</Name>
<Value>Some value</Value>
<DataType>1</DataType>
<CreationTime>2012-05-15T14:27:39.6427753+02:00</CreationTime>
<CreationTimeUtc>2012-05-15T12:27:39.6427753Z</CreationTimeUtc>
</IndexData>
<IndexData>
<Name>Name2</Name>
<Value>Some value</Value>
<DataType>3</DataType>
<CreationTime>2012-05-15T14:27:39.6427753+02:00</CreationTime>
<CreationTimeUtc>2012-05-15T12:27:39.6427753Z</CreationTimeUtc>
</IndexData>
...
</IndexDatas>
</Document>
...
</Documents>
我有一個「文檔」節點,其中包含一堆「文檔」節點。
我有文檔的GUID和「IndexData」名稱。 我需要通過GUID查找文檔,並檢查它是否帶有某個名稱的「IndexData」。 如果它沒有它,我需要添加它。
任何幫助將是apreciated,因爲我有閱讀和搜索槽元素的問題。
目前,我嘗試使用(在C#):
IEnumerable<XElement> xmlDocuments = from c in XElement
.Load(filePath)
.Elements("Documents")
select c;
// fetch document
XElement documentElementToEdit = (from c in xmlDocuments where
(string)c.Element("GUID").Value == GUID select c).Single();
編輯
xmlDocuments.Element("Documents").Elements("Document")
這將返回任何結果,即使壽xmlDocuments.Element( 「文檔」)一樣。它看起來像我不能從文檔節點獲取文檔節點。
我認爲這應該是'doc.Descendants( 「文檔」)' – 2012-07-06 06:36:52
謝謝,固定。 – 2012-07-06 06:41:26