J'ai une chaîne XML qui contient des dates formatées "jj/mm/aaaa hh: mm: ss".Comment obtenir DataSet.ReadXml pour analyser un attribut DateTime en tant que typé DateTime
Je charge ce code XML dans un ensemble de données en utilisant DataSet.ReadXml()
.
Comment puis-je m'assurer que cette date est stockée dans le DataSet en tant que DateTime tapé afin que je puisse Trier, Format et RowFilter en conséquence.
Mon harnais de test est comme ci-dessous:
ASPX Page:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="XmlDateTypeList.aspx.cs" Inherits="Test.XmlDateTypeList" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Test</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Date" HeaderText="Date" DataFormatString="{0:dddd dd MMMM yyyy}" />
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
code Derrière:
using System;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Linq;
namespace Test
{
public partial class XmlDateTypeList : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
XDocument xDoc = new XDocument(
new XElement("List",
new XElement("Item",
new XAttribute("Name", "A"),
new XAttribute("Date", "21/01/2010 00:00:00")
),
new XElement("Item",
new XAttribute("Name", "B"),
new XAttribute("Date", "12/01/2010 00:00:00")
),
new XElement("Item",
new XAttribute("Name", "C"),
new XAttribute("Date", "10/01/2010 00:00:00")
),
new XElement("Item",
new XAttribute("Name", "D"),
new XAttribute("Date", "28/01/2010 00:00:00")
)
)
);
DataSet dataSet = new DataSet();
dataSet.ReadXml(new StringReader(xDoc.ToString()));
GridView1.DataSource = dataSet.Tables[0];
GridView1.DataBind();
}
}
}
Que voulez-vous dire que XML ne peut pas être fortement typé? Le problème est que vos données XML ne contiennent pas de date valide. Il y a précisément une représentation des dates en XML, et ce n'est pas ça. Recherchez le format 'xs: Date' dans le schéma XML si vous souhaitez que vos chaînes soient considérées comme des dates par des outils qui attendent que XML suive les normes XML. –
Ok, je vais mettre à jour ma réponse, vous pouvez taper des dates xml mais pas dans l'exemple car la date est dans un format impair. C'est une date valide (c'est la norme au Royaume-Uni), mais pas une date valide par schéma XML. – nbushnell
Merci pour votre réponse, cela a aidé. À la fin, j'ai effectivement converti la date dans le format correct en utilisant la manipulation de chaînes dans un xslt, puis chargé un xsd afin de dire à l'ensemble de données qu'il s'agissait d'une date. –