Bonjour, je relance parce que je n'ai toujours pas de solution même si j'ai un peu avancé :s
Alors voilà où j'en suis :
je voudrais développer une application web via ASP.NET permettant de lire un fichier xml, je m'explique.
Cette application devra pouvoir afficher dans un tableau (gridview je crois, c'est la premier fois que je tente quelque chose en ASP.NET et même en C# :p) tous les attributs (balises) et la valeur associée d'un fichier xml passé en paramètre et ce, quelque soit la structure du fichier (je ne connais pas l’arborescence du fichier ni le nom des attributs ni leur nombre).
Voici un extrait d'un fichier xml :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <?xml version="1.0" encoding="utf-8"?>
<ns1:OXML msgId="OPEN_CONTRACT" xmlns:ns1="http://meex.OM.OXML">
<ns1:Header sessionId="0005977" date="10/07/2012 09:47:11" sender="OM Fr" />
<ns1:DU fid="20120710-00006C850007127" multiLab="false" isFirst="true" compressedDUFid="1JW7A00006C850007127" category="DEV" legacyDeliveryNumber="7525119">
<ns1:CommonData>
<Customer code="7522008" customerType="030" customerName="" customerAddress="112/114 RUE DE RIVOLI" customercitycode="75001" customercityname="PARIS" customerPhone="7522008" CustomerCountry="FR" />
<ExpectedDelivery date="2012-07-15T00:00:00" />
<OrderTaking date="2012-07-10T09:46:43.730" agencyCode="" />
<ExpectedEndOfFabrication date="2012-07-10T20:22:02.320" />
<Comment>
<BothLens registrationComment="" />
<RightLens customerReference="UC02_CFM" commercialComment="" fulfillmentComment="" />
<LeftLens customerReference="UC02_CFM" commercialComment="" fulfillmentComment="" />
</Comment>
</ns1:CommonData> |
Et voici mon code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| using System.Xml;
using System.Collections;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ArrayList list = new ArrayList();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"D:\Documents and Settings\benadjer\My Documents\Visual Studio 2005\Projects\WebSite1\7525119.xml");
ParseXml(xmlDoc.DocumentElement, list);
}
private void ParseXml(XmlNode xmlNode, ArrayList list)
{
foreach (XmlAttribute xmlAttribute in xmlNode.Attributes)
{
list.Add(xmlAttribute.Name + " = " + xmlAttribute.Value);
}
foreach (XmlNode childNode in xmlNode.ChildNodes)
{
this.ParseXml(childNode, list);
}
GridView1.DataSource = list;
GridView1.DataBind();
}
} |
Avec ce code j'ai le message d'erreur suivant :
La référence d'objet n'est pas définie à une instance d'un objet.
Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.
Détails de l'exception: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
Erreur source:
Ligne 25 :
Ligne 26 :
Ligne 27 : foreach (XmlAttribute xmlAttribute in xmlNode.Attributes)
Ligne 28 : {
Ligne 29 :
Et lorsque je retire cette partie du code :
1 2 3 4
| foreach (XmlNode childNode in xmlNode.ChildNodes)
{
this.ParseXml(childNode, list);
} |
je ne réussi à afficher dans le gridview que cette partie (la première) :
<ns1:OXML msgId="OPEN_CONTRACT" xmlns:ns1="http://meex.OM.OXML">
Je ne vois pas pourquoi cela bloque.
Merci d'avoir pris le temps de lire tout cela et merci pour votre aide.
Partager