:エラー...
Employeeクラスは、すべてのステータス(int型)、タイプ(INT)を除く文字列として行くの表示(ブール値)
public partial class Version2 : System.Web.UI.Page {
private Employee[] Employees;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
XDocument xdoc = XDocument.Load(Server.MapPath("~/")+ "V2Employees.xml");
IEnumerable<XElement> emps = xdoc.Root.Descendants();
Employees = emps.Select(x => new Employee()
{
Employee_ID = x.Attribute("id").Value,
First_Name = x.Element("First_Name").Value,
Last_Name = x.Element("Last_Name").Value,
Classification_Group = x.Element("Classification_Group").Value,
Classification_Level = x.Element("Classification_Level").Value,
Postion_Number = x.Element("Postion_Number").Value,
English_Title = x.Element("English_Title").Value,
French_Title = x.Element("French_Title").Value,
Location = x.Element("Location").Value,
Language = x.Element("Language").Value,
Department_ID = x.Element("Department_ID").Value,
Status = int.Parse(x.Element("Status").ToString()),
Type = int.Parse(x.Element("Type").ToString()),
Displayed = false}).ToArray();
}
例のXMLですXElement
にあるToString
の場合、要素全体が文字列として終了します。
<Status>4</Status>
...そして、それをint
として解析しようとしています。私は強くお勧めします:あなたは(後でToString
コールは必要ありません)文字列としての要素の値をしたいとき
- ちょうど
string
にValue
プロパティやキャストを使用して
- キャストを使用して
int
にするとき // Property names adjusted to .NET naming conventions, type of
// PositionNumber changed to an int.
Employees = emps.Select(x => new Employee
{
EmployeeId = (string) x.Attribute("id"),
FirstName = (string) x.Element("First_Name"),
LastName = (string) x.Element("Last_Name"),
ClassificationGroup = (string) x.Element("Classification_Group"),
ClassificationLevel = (string) x.Element("Classification_Level"),
PositionNumber = (int) x.Element("Postion_Number"),
EnglishTitle = (string) x.Element("English_Title"),
FrenchTitle = (string) x.Element("French_Title"),
Location = (string) x.Element("Location"),
Language = (string) x.Element("Language"),
DepartmentId = (string) x.Element("Department_ID"),
Status = (int) x.Element("Status"),
Type = (int) x.Element("Type"),
Displayed = false
}
:あなたは整数
へXElement
の値を変換したい私はあなたのようSelect
を記述します
string
へのキャストの代わりに.Value
を使用すると、要素に適切なサブ要素がない場合は、NullReferenceException
が返されます。あなたはそれがすべての必要な情報があることを確認してValidate
メソッドを持って、その後、代わりに上記のフォームを使用することをお勧めします - おそらくあなたがより明確にエラーを報告できるようになる:
- あなたがかなり不足しているプロパティ言うことができますただ例外
- を得るよりも、あなたは、単一のエラーメッセージ
は、エラー – RoguePlanetoid
あなたは 'x.Element(「ステータス」)を有するを引き起こしているものを見つけるために、一度に一つにコメントすべての行をコメントアウトしてみてくださいでした。ToStringメソッド()'これはx.Element( "Status")、Value.ToString() 'でなければなりません。 – Valeklosse
'XElement.Value'の型が' string'であるか、単に変換を使用すると 'x.Element(" Status ").Value':'(string)x.Element( "Status") '〜文字列の値を取得するか、より良い方法ですが、 'XElement'から' int': '(int)' x.Element( "Status") 'への変換を使用するだけです。 –