问题
File Name: location.xml
<?xml version="1.0" encoding="utf-8" ?>
<locations>
<location id="1" position="Holiday" />
<location id="2" position="Time Off" />
<location id="3" position="Training" />
</locations>
I am trying to populate a combobox with the "text" from position. The id is not necessary at this time.
My C# Code
var obj = XDocument.Load("location.xml");
comboBox1.DisplayMember = "LocationPosition";
comboBox1.ValueMember = "LocationID";
comboBox1.DataSource = obj.Descendants("location").Select(x => new
{
LocationPosition = x.Attribute("name").Value,
LocationID = x.Attribute("id").Value
}).ToList(); // Crashing here
The Error message says
System.NullReferenceException was unhandled
HResult=-2147467261
Message=Object reference not set to an instance of an object.
Source=CalendarSharing
StackTrace:
回答1:
That because there isn't any name
attribute in that xml string.
Change name
to position
:
var obj = XDocument.Load("location.xml");
comboBox1.DisplayMember = "LocationPosition";
comboBox1.ValueMember = "LocationID";
comboBox1.DataSource = obj.Descendants("location").Select(x => new
{
LocationPosition =x.Attribute("position").Value,
LocationID = x.Attribute("id").Value
}).ToList();
来源:https://stackoverflow.com/questions/35635630/trying-to-bind-xml-to-a-combobox-using-winform-and-c-sharp