загрузка чтение xml и заполнение полей в форме значениями

#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.