2013-08-03 7 views
0

У меня есть общий обработчик, который будет читать XML-файл и отправить результат на вызов ajax как JSON. Когда я запускаю программу, я получаю эту ошибку:Чтение XML-файла с использованием Linq для XML внутри общего обработчика C#

стороны клиента Код:

$(function() { 
$('#getData').click(function() { 
    $.ajax({ 
     type: 'GET', 
     datatype: 'json', 
     url: 'DynamicHandler.ashx', 
     contentType: "application/json; charset=utf-8", 

     success: function (result) { 

      var property = JSON.parse(result); 

      console.log(property); 
     } 
    }); 
}); 

});

сервера Код Сторона: (Handler.ashx)

public void ProcessRequest(HttpContext context) 
{ 
    context.Response.ContentType = "text/plain"; 
    var realestate = XDocument.Load(System.Web.HttpContext.Current.Server.MapPath("Realestate.xml")); 
    var query = from items in realestate.Descendants("Property") 
     select new 
     { 
      Name = items.Attribute("Name").Value, 
      Image = items.Attribute("Image").Value, 
      Location = items.Attribute("Location").Value, 
      Rooms = items.Attribute("Rooms").Value, 
      PropertyValue = items.Attribute("PropertyValue").Value, 
      Contact = items.Attribute("Contact").Value, 
      Description = items.Attribute("Description").Value 
     }; 


    var scriptSerializer = new JavaScriptSerializer(); 
    context.Response.Write(scriptSerializer.Serialize(query)); 
} 

public bool IsReusable 
{ 
    get 
    { 
     return false; 
    } 
} 

}

Ссылка на XML-файл:

[http://omerbuzo.me/Realestate.xml][1] 

Когда я запускаю это с отладчиком я получаю следующую ошибку (в строке: выберите новый {анонимный объект}) в файле Handler.ashx;

Object reference not set to an instance of an object. 

и в console.log я получаю:

Failed to load resource: the server responded with a status of 500 (Internal Server Error) 

Можно ли указать, что, кажется, проблема?

Спасибо расширенный :)

+0

Рассмотрим, чтобы показать нам mininmal, но полный и хорошо сформированный образец документа XML загружаемой в ваш текущий образец '' не является корректным, и неясно, как выглядит ваш реальный XML, в частности, когда код пытается получить доступ к элементам 'Property' и их атрибуты lik e 'Name' или' Image' без каких-либо атрибутов, присутствующих в элементе 'Property', который вы показываете. –

+0

Вот ссылка на XML-файл: [XML FILE] (http://omerbuzo.me/Realestate.xml) – OmerBTW

ответ

0

Изменить

var query = from items in realestate.Descendants("Property") 
    select new 
    { 
     Name = items.Attribute("Name").Value, 
     Image = items.Attribute("Image").Value, 
     Location = items.Attribute("Location").Value, 
     Rooms = items.Attribute("Rooms").Value, 
     PropertyValue = items.Attribute("PropertyValue").Value, 
     Contact = items.Attribute("Contact").Value, 
     Description = items.Attribute("Description").Value 
    }; 

в

var query = from prop in realestate.Descendants("Property") 
    select new 
    { 
     Name = (string)prop.Element("Name"), 
     Image = (string)prop.Element("Image"), 
     Location = (string)prop.Element("Location"), 
     Rooms = (string)prop.Element("Rooms"), 
     PropertyValue = (string)prop.Element("PropertyValue"), 
     Contact = (string)prop.Element("Contact"), 
     Description = (string)prop.Element("Description") 
    }; 
+0

Спасибо, что так много работает. объясните пожалуйста, в чем была проблема? – OmerBTW

+0

Ну, элементы 'Property' имеют дочерние элементы, такие как' Name' или 'Image', и для доступа к ним вы используете' Element («Name») '. 'Атрибут (« Имя »)' будет работать для ''. –

+0

Didyou бросил его, поэтому он всегда будет возвращать строку, даже если Element равен NULL? – OmerBTW

 Смежные вопросы

  • Нет связанных вопросов^_^