我想學習如何在C#中用XML保存和提取數據,即使我已經閱讀了關於這裏的類似問題的各種答案,但我無法獲得保留爲什麼我的陳述沒有任何回報。 我正在編寫的程序只是一個測試,其中我已經在xml文檔中保存了關於幾部電影的數據,現在我試圖根據它們的成本檢索其中的一些。用linq搜索Xml文檔不返回任何東西
這是我爲搜索編寫的類:
class ExtractData
{
private XDocument _xdoc;
public List<string> SearchByCost(double cost)
{
_xdoc = XDocument.Load(FileLocation.XmlFileLocation);
List<string> list = new List<string>();
var movies = from movie in _xdoc.Root.Elements("Name")
where Convert.ToDouble(movie.Element("Cost").Value) < cost
select movie;
foreach (var item in movies)
{
list.Add(item.Value);
}
return list;
}
}
這是我正在努力使其打印在控制檯:
eData = new ExtractData();
foreach (var movie in eData.SearchByCost(9))
{
Console.WriteLine(movie);
}
這是XML文檔的內容:
<?xml version="1.0" encoding="utf-8"?>
<Movies>
<Movie>
<Id>1</Id>
<Name>Shawshank Redemption</Name>
<Director>Frank Darabont</Director>
<Year>1994</Year>
<Cost>9.95</Cost>
</Movie>
<Movie>
<Id>2</Id>
<Name>Pulp Fiction</Name>
<Director>Quentin Tarantino</Director>
<Year>1995</Year>
<Cost>8.95</Cost>
</Movie>
<Movie>
<Id>3</Id>
<Name>Sharknado</Name>
<Director>Anthony Ferrante</Director>
<Year>2013</Year>
<Cost>5.95</Cost>
</Movie>
</Movies>
我希望這是足夠的信息來嘗試和幫助我,並提前致謝! :)
您需要調試代碼。另外,'var movies = from _xdoc.Root.Elements(「Name」)中的影片會選擇(可能 - 它可能不會返回任何內容,但如果是的話......)所有元素。然後,您嘗試通過'movie.Element(「Cost」)檢索成本,但元素*沒有任何子元素!! *至少需要將其更改爲_xdoc.Root.Elements (「電影」)'並在末尾做一個'select movie.Elements(「Name」)'或類似的名字,以獲得匹配的所有電影名稱。 –
Will
謝謝,我顯然已經把那個linq查詢中的元素名稱混淆了一下。感謝您的幫助:) – sunero4