#c# #jquery #xml #json
#c# #jquery #xml #json
Вопрос:
Есть ли способ загрузить xml в c # и сопоставить значения с определенными текстовыми полями с помощью jquery?
<?xml version="1.0" encoding="ISO-8859-1"?>
<AuditSheet>
<CustomerInfo>
<CustomerName></CustomerName>
<PlantSiteName></PlantSiteName>
<SystemName></SystemName>
<PhysicalAddress1></PhysicalAddress1>
<PhysicalAddress2></PhysicalAddress2>
</CustomerInfo>
</AuditSheet>
Комментарии:
1. Почему ваш вопрос помечен
json
? О каком приложении вы говорите? ASP.NET , WinForms, Silverlight, WPF, …? Под загрузкой вы подразумеваете, что пользователь что-то загружает?2. @DarinDimitrov Потому что я хочу преобразовать xml в json после того, как я его загрузил, и поместить значения в разные текстовые поля. Asp.net . «Загрузить XML».
3. почему вы хотите преобразовать XML в JSON? Зачем вам нужен JSON для заполнения значений в текстовых полях?
4. @DarinDimitrov Мне не нужно, но я думаю, так проще.
5. Имеет ли XML статическую схему? Если да, как это выглядит? Если нет, то как вы ожидаете выполнить сопоставление?
Ответ №1:
вы задали сложный вопрос с очень небольшим описанием того, чего именно вы хотите достичь.
Я думаю, вы хотите разрешить пользователю загружать XML-файл на веб-страницу, а затем, я думаю, с помощью AJAX отправить XML на сервер и вернуть JSON, чтобы вы могли использовать это для заполнения полей на той же странице.
Что вы можете сделать, это создать HTTP-обработчик (реализующий IHttpHandler). Зарегистрируйте этот обработчик в вашем web.config с определенным URL-адресом, например /services/sheetuploader.ashx.
Затем определите классы с именами AuditSheet и CustomerInfo и украсьте их атрибутом DataContract и отметьте элементы, соответствующие вашим элементам AuditSheet XML, атрибутами DataMember.
Что-то вроде:
[DataContract]
public class AuditSheet
{
[DataMember]
public CustomerInfo CustomerInfo{get; set;}
}
[DataContract]
public class CustomerInfo
{
[DataMember]
public string CustomerName {get;set;}
//rest of the members go here...
}
Затем вы можете использовать System.Runtime.Сериализация.Объект DataContractSerializer для чтения XML в экземпляр вашего класса AuditSheet. Для этого см. Метод readObject . Вы делаете это в методе ProcessRequest вашего Http-обработчика.
После создания объекта вы можете выполнить сериализацию в JSON с помощью System.Runtime.Serialization.Json.DataContractJsonSerializer и его метод writeObject.
Чтобы отправить обратно JSON клиенту, вы добавляете следующее в метод ProcessRequest
context.Response.ContentType = "text/json";
context.Response.Write(ConvertToJson(auditSheet)); //auditSheet is an instance of AuditSheet read from XML
для отправки XML на сервер вы можете использовать AJAX-метод jQuery с использованием POST-запроса.
Надеюсь, я близок к тому, что вы на самом деле пытаетесь сделать, и это может помочь вам начать.
Yoav.