上传+读取xml并使用值填充表单中的字段

时间:2011-10-18 14:28:24

标签: c# jquery xml json

有没有办法在c#中上传xml并使用jquery将值映射到某些文本框?

<?xml version="1.0" encoding="ISO-8859-1"?>
<AuditSheet>
<CustomerInfo>
<CustomerName></CustomerName>
<PlantSiteName></PlantSiteName>
<SystemName></SystemName>
<PhysicalAddress1></PhysicalAddress1>
<PhysicalAddress2></PhysicalAddress2>
</CustomerInfo>
</AuditSheet>

1 个答案:

答案 0 :(得分:0)

你问了一个复杂的问题,很少描述你想要达到的目标。

我认为您想要做的是允许用户将XML文件上传到网页,然后我想使用AJAX将XML发送到服务器并让它返回JSON,这样您就可以使用它来填充相同的字段页。

您可以做的是创建一个HTTP处理程序(实现IHttpHandler)。使用特定URL(例如/services/sheetuploader.ashx)在web.config中注册该处理程序。

然后定义一个名为AuditSheet和CustomerInfo的类,并使用DataContract属性修饰它们,并使用DataMember属性标记与AuditSheet XML元素匹配的成员。

类似的东西:

[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.Serialization.DataContractSerializer对象将XML读入AuditSheet类的实例。请参阅ReadObject方法。您可以在Http Handler的ProcessRequest方法中执行此操作。

创建对象后,您可以使用System.Runtime.Serialization.Json.DataContractJsonSerializer及其WriteObject方法序列化为JSON。

要将JSON发送回客户端,请将以下内容添加到ProcessRequest方法

context.Response.ContentType = "text/json";
context.Response.Write(ConvertToJson(auditSheet)); //auditSheet is an instance of AuditSheet read from XML

要将XML发送到服务器,您可以使用POST请求使用jQuery's AJAX方法。

希望我接近你真正想做的事情,这可以帮助你开始。

约阿夫。