noseparker
April 15th, 2011, 06:34 AM
Hi all,
I cannot figure out what is wrong with this method i am writing, it is supposed to go through the xml file and remove all "Day" nodes that have a specified "Ticker". Here is the xml:
<?xml version="1.0" encoding="utf-8" ?>
- <Days>
- <Day>
<Ticker>MSFT</Ticker>
<Date>14th Apr 2011</Date>
<Open>25.5</Open>
<High>25.5</High>
<Low>25.5</Low>
<Close>25.5</Close>
<Volume>22000000</Volume>
<AdjClose>34.56</AdjClose>
</Day>
- <Day>
<Ticker>MSFT</Ticker>
<Date>14th Apr 2011</Date>
<Open>25.5</Open>
<High>25.5</High>
<Low>25.5</Low>
<Close>25.5</Close>
<Volume>22000000</Volume>
<AdjClose>34.56</AdjClose>
</Day>
- <Day>
<Ticker>TSCO</Ticker>
<Date>14th Apr 2011</Date>
<Open>25.5</Open>
<High>25.5</High>
<Low>25.5</Low>
<Close>25.5</Close>
<Volume>22000000</Volume>
<AdjClose>34.56</AdjClose>
</Day>
- <Day>
<Ticker>TSCO</Ticker>
<Date>14th Apr 2011</Date>
<Open>25.5</Open>
<High>25.5</High>
<Low>25.5</Low>
<Close>25.5</Close>
<Volume>22000000</Volume>
<AdjClose>34.56</AdjClose>
</Day>
</Days>
Here is the C#:
public void DeleteTickerData(string ticker)
{
XDocument xmldoc = XDocument.Load("Data.xml");
var days = from day in xmldoc.Descendants("Day")
select new
{
Ticker = day.Element("Ticker").Value,
Date = day.Element("Date").Value,
Open = day.Element("Open").Value,
High = day.Element("High").Value,
Low = day.Element("Low").Value,
Close = day.Element("Close").Value,
Volume = day.Element("Volume").Value,
AdjClose = day.Element("AdjClose").Value,
};
foreach (var day in days)
{
if (day.Ticker == ticker)
{
xmldoc.Element("Day").Remove();
}
}
xmldoc.Save("products.xml");
}
The line "xmldoc.Element("Day").Remove();" gives this error:
Object reference not set to an instance of an object.
Please let me know what stupid mistake i have made.
noseparker
I cannot figure out what is wrong with this method i am writing, it is supposed to go through the xml file and remove all "Day" nodes that have a specified "Ticker". Here is the xml:
<?xml version="1.0" encoding="utf-8" ?>
- <Days>
- <Day>
<Ticker>MSFT</Ticker>
<Date>14th Apr 2011</Date>
<Open>25.5</Open>
<High>25.5</High>
<Low>25.5</Low>
<Close>25.5</Close>
<Volume>22000000</Volume>
<AdjClose>34.56</AdjClose>
</Day>
- <Day>
<Ticker>MSFT</Ticker>
<Date>14th Apr 2011</Date>
<Open>25.5</Open>
<High>25.5</High>
<Low>25.5</Low>
<Close>25.5</Close>
<Volume>22000000</Volume>
<AdjClose>34.56</AdjClose>
</Day>
- <Day>
<Ticker>TSCO</Ticker>
<Date>14th Apr 2011</Date>
<Open>25.5</Open>
<High>25.5</High>
<Low>25.5</Low>
<Close>25.5</Close>
<Volume>22000000</Volume>
<AdjClose>34.56</AdjClose>
</Day>
- <Day>
<Ticker>TSCO</Ticker>
<Date>14th Apr 2011</Date>
<Open>25.5</Open>
<High>25.5</High>
<Low>25.5</Low>
<Close>25.5</Close>
<Volume>22000000</Volume>
<AdjClose>34.56</AdjClose>
</Day>
</Days>
Here is the C#:
public void DeleteTickerData(string ticker)
{
XDocument xmldoc = XDocument.Load("Data.xml");
var days = from day in xmldoc.Descendants("Day")
select new
{
Ticker = day.Element("Ticker").Value,
Date = day.Element("Date").Value,
Open = day.Element("Open").Value,
High = day.Element("High").Value,
Low = day.Element("Low").Value,
Close = day.Element("Close").Value,
Volume = day.Element("Volume").Value,
AdjClose = day.Element("AdjClose").Value,
};
foreach (var day in days)
{
if (day.Ticker == ticker)
{
xmldoc.Element("Day").Remove();
}
}
xmldoc.Save("products.xml");
}
The line "xmldoc.Element("Day").Remove();" gives this error:
Object reference not set to an instance of an object.
Please let me know what stupid mistake i have made.
noseparker