Voila j'aimerai creer l'element : <geo:lat> </geo:lat>
a l'aide du system.xml.linq (xelement , xattribute , xnamespace. ....)
Voila j'aimerai creer l'element : <geo:lat> </geo:lat>
a l'aide du system.xml.linq (xelement , xattribute , xnamespace. ....)
ouai, d'accord, c'est très bien comme projet
Et sinon la question c'est quoi ?
il me semble que la question est claire :
j'aimerai creer le rss suivant a l'aide des xelements et autres class du system.xml.linq;
<geo:lat> 2 </geo:lat>
seul probleme si je fais:
je recois une erreur qui stipule que le name ne peut contenir le char ":";
Code : Sélectionner tout - Visualiser dans une fenêtre à part XElementelement = new XElement("geo:lat","2");
donc ma question est comment creer une node du type:
<A:B> blabla </A:B> avec ":"
le "geo:" est le namespace, regarde sur le constructeur du XElement si tu peux mettre un namespace qui lui sera simplement "geo".
il y a l'operator "+" qui permet lors de cration d'un xname d'associer un namespace seul probleme :
jai reussi pour le moment a reproduire uniquement:
<xmlns:geo> ..
ou si vous preferez:
<xlmns:A>
et si tu nous montrais ton code?
voila ce que j'aimerai reproduire:
et voila ce que je fais:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <rss version="2.0" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"> <channel> <title>Mobyname</title> <link></link> <item> <title>fred</title> <description>3</description> <geo:lat>46.2913246</geo:lat> <geo:long>-122.2658157</geo:long> </item> </channel> </rss>
fonction GetGeoCode qui me pose probleme qui est suppose me retourner :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 protected void Page_Load(object sender, EventArgs e) { MobyContext.MobyDataContext db = new MobyContext.MobyDataContext(); XAttribute aw = new XAttribute(XNamespace.Xmlns + "geo", "http://www.w3.org/2003/01/geo/wgs84_pos#"); var geoRSS = new XDocument(new XDeclaration("2.0", "utf-8", "yes"), new XElement("rss", aw, new XAttribute("version", "2.0"), new XElement("channel", new XElement("title", "Northwind Customer Locations"), new XElement("link", ""), from users in db.aspnet_Users let Desc = string.Format("{0}, {1}", users.UserName, users.LoweredUserName) select new XElement("item", new XElement("title", users.UserName), new XElement("description", Desc), GetGeoCode("46.2913246", "-122.2658157").Descendants() ) ) ) ); Response.ContentType = "text/xml"; Response.Write(geoRSS.ToString()); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <geo:lat>46.2913246</geo:lat> <geo:long>-122.2658157</geo:long>geo: etant un namespace definit en haut apres le rss:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 XElement GetGeoCode(string lat, string longitude) { XNamespace geoNamespace = "http://www.w3.org/2003/01/geo/wgs84_pos"; XElement myElem = new XElement("location", new XElement(geoNamespace + "lat", new XAttribute(XNamespace.Xmlns + "geo", "http://www.w3.org/2003/01/geo/wgs84_pos#"), lat), new XElement(geoNamespace + "long", new XAttribute(XNamespace.Xmlns + "geo", "http://www.w3.org/2003/01/geo/wgs84_pos#"), longitude) ); return myElem; }
merci pour l'aide je galere pas mal .
j'ai obtenu des trucs {geo}lat et ainsi de suite.
ps je veux pas passer par un stringbuilder pour le loader dans un xml.
Le code suivant:
XElement myElem = newXElement("location", newXAttribute(XNamespace.Xmlns + "geo", geoNamespace),
newXElement(geoNamespace + "lat", 10),
newXElement(geoNamespace + "long", 20)
);
te donnera:
<location xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos">
<geo:lat>10</geo:lat>
<geo:long>20</geo:long>
</location>
voila ce que j'obtiens avec ton code :
mais je viens de reussir a resoudre mon probleme grace a toi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <lat xmlns="http://www.w3.org/2003/01/geo/wgs84_pos#">0.000000000000</lat> <long xmlns="http://www.w3.org/2003/01/geo/wgs84_pos#">0.000000000000</long>
un peu different que ce que j'avais demandais mais je n'arrive pas a le reproduire mais ceci marche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 XNamespace oXNamespace = "http://www.w3.org/2003/01/geo/wgs84_pos"; XElement myElem = new XElement("location", new XElement(oXNamespace + "lat", lat, new XAttribute(XNamespace.Xmlns + "geo", oXNamespace)), new XElement(oXNamespace + "long", longitude, new XAttribute(XNamespace.Xmlns + "geo", oXNamespace)) );
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager