我已經看了很多資源,做了大量的研究,並且嘗試了許多「最佳猜測」來一次訪問使用WebMatrix與C#,網頁的單個元素,但是我所嘗試的並沒有得到通過。如何使用帶WebMatrix的C#.net Web頁訪問單個XML元素的值?
考慮一個簡單的XML文檔,看起來像這樣:
<root>
<requisitionData>
<element1>I am element 1</element1>
<element2>I am element 2</element2>
</requisitionData>
</root>
我知道我可以使用foreach循環,就像這樣:
@using System.Xml.Linq
XDocument doc = XDocument.Load(Server.MapPath("~/User_Saves/cradebaugh/testFile.xml"));
foreach (XElement element in doc.Descendants("requisitionData"))
{
@element.Value
}
而這,當然,做工精細。但是如果我只是想將單個元素<element1>
的值存儲在字符串變量中呢?我看了這裏(下面的鏈接),但我不能讓這個代碼的正面或反面(它幾乎看起來像C#對我來說,但是,然後再次,我是新來解析XML .. 。):
我也曾經到過這裏:How to Get XML Node from XDocument
但顯示的代碼是沒有意義的,我在這裏無論是。我一直認爲必須有一個更簡單的方法來做到這一點,希望沒有學習一種全新的查詢方法。
---------------------------------我試過的東西-------- -------------------------
XDocument doc = XDocument.Load(Server.MapPath("~/User_Saves/cradebaugh/testFile.xml"));
string element = doc.Descendants("requisitionData").Descendants("element1").Value;
錯誤我得到:使用指令或組件引用
XDocument doc = XDocument.Load(Server.MapPath("~/User_Saves/cradebaugh/testFile.xml"));
XElement element = doc.Descendants("element1");
string val = element.Value;
「缺
我收到的錯誤:無法隱式地將類型'System.Collections.Generic.IEnumerable'轉換爲'System.Xml.Linq.XElement'。存在顯式轉換(您是否缺少轉換?)
我確實嘗試了其他的東西,但是我得到的錯誤與上面顯示的差不多。我是否比這更難,還是我簡化了它?
------------------------- UPDATE -------------------- ----------
我能得到這個工作:
string element = doc.Element("root").Element("requisitionData").Element("element1").Value;
@element
然而,有一件事我關注這個方法的缺點是.Element
選擇「第一」的比賽,所以在XML文檔中,看起來像這樣:
<root>
<requisitionData>
<element1>I am element 1</element1>
<element2>I am element 2</element2>
</requisitionData>
<requisitionData>
<element1>I am element 1</element1>
<element2>I am element 2</element2>
</requisitionData>
</root>
我怎麼能訪問第二次出現0?
有這個問題後解決了幾天(感謝下面的答案),我不得不說,使用XPathSelectElement(s)似乎是要走的路。 XPath功能強大(比我意識到的方式更精確),並且完全靈活,無論我需要單個元素還是多個元素。 – VoidKing 2013-04-12 13:25:42