16. august 2005 - 09:35Der er
12 kommentarer og 1 løsning
Sql i xml
Er der en måde at jeg kan bruge SQL til at hente elementer ud fra et XML dokument.
Jeg har prøvet WilsonXmlDbClient - den virker sådan set fint, men jeg kan ikke få den til at lave statements som f.eks. "SELECT MAX(forumID) FROM forum" eller "SELECT * FROM forum ORDER BY forumID DESC" Spørgsmålet er lidt er der alternativer til WilsonXmlDbClient eller hvad pokker gør man... Jeg skal hente det fra et XML dokument, da det er eksterne data, og jeg har ikke lyst til at smide dem igennem en Database først.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Glemte lige mit XML dokument: <?xml version="1.0" encoding="utf-8"?><forums> <forum><forumID>5</forumID><homepageID>1</homepageID><title>Dette er en test 1</title><teaser /><imageID>0</imageID><mainCategoryID>222</mainCategoryID><categoryID>111</categoryID><moderators>999</moderators><threadCnt>222</threadCnt><threadRepliesCnt>200</threadRepliesCnt><addedDateTime>15-08-2005 13:52:26</addedDateTime><lastThreadDateTime>15-08-2005 13:52:26</lastThreadDateTime><lastThreadReplyDateTime>15-08-2005 13:52:26</lastThreadReplyDateTime></forum> <forum><forumID>1</forumID><homepageID>2</homepageID><title>Dette er en test 2</title><teaser /><imageID>210</imageID><mainCategoryID>222</mainCategoryID><categoryID>111</categoryID><moderators>999</moderators><threadCnt>222</threadCnt><threadRepliesCnt>200</threadRepliesCnt><addedDateTime>15-08-2005 13:52:26</addedDateTime><lastThreadDateTime>15-08-2005 13:52:26</lastThreadDateTime><lastThreadReplyDateTime>15-08-2005 13:52:26</lastThreadReplyDateTime></forum> <forum><forumID>2</forumID><homepageID>2</homepageID><title>Dette er en test 3</title><teaser /><imageID>210</imageID><mainCategoryID>222</mainCategoryID><categoryID>111</categoryID><moderators>999</moderators><threadCnt>222</threadCnt><threadRepliesCnt>200</threadRepliesCnt><addedDateTime>15-08-2005 13:52:26</addedDateTime><lastThreadDateTime>15-08-2005 13:52:26</lastThreadDateTime><lastThreadReplyDateTime>15-08-2005 13:52:26</lastThreadReplyDateTime></forum> </forums>
Det er muligt at det er nødvendigt at bruge XPath... Jeg kender ikke rigtig så meget til XPath, men umiddelbart vil det give en række ulemper, idet at det vil være nødvendigt at lave en række ekstra funktioner. F.eks. til beregning af MAX(ForumID), ORDER BY forumID DESC, MIN(ForumID) og sikkert også andre ting. Problemet er at jeg helt sikkert for behov for at trække en del forskellige data ud, F.eks. vil der være relationer i en forum.xml fil til en xml fil der f.eks. hedder thread.xml etc. så spørgsmålet er nok om det er muligt på en eller anden måde at få de samme ting ud af XML som ved SQL i en Database.
Idet jeg ikke er super hård til ASP.NET + C# endnu er der sikkert en del jeg overser. Er det f.eks. muligt at lave sql udtræk fra et DataSet? Hvis det er mulig vil jeg jo blot kunnne konvertere min XML til DataSet og derfra lave et udtræk.
namespace E { public class MainClass { public static void Main(string[] args) { DataSet ds = new DataSet(); ds.ReadXmlSchema(@"C:\ds.xsd"); ds.ReadXml(@"C:\ds.xml"); int count = (int)ds.Tables[0].Compute("COUNT(value)",""); long sum = (long)ds.Tables[0].Compute("SUM(value)",""); long avg = (long)ds.Tables[0].Compute("AVG(value)",""); Console.WriteLine(count + " " + sum + " "+ avg); } } }
Schema'et er nødvendigt for at få tal felter gjordt til tal så man kan ABG og SUM på dem.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.