Fråga : problem med att frambringa XML using LINQ och C#

Pröva förmiddag I att frambringa en XML sparar using LINQ med C# i en källa för data för ASP.NET-applikation

The är en SQLDataReader som problemet för

The för databas för extraktdatad=from… är att XMLEN att den pröva I-förmiddagen att frambringa inte är i förmiddagen för formatera I, efter…

The har formaterat mig, önska att min XML ska vara in fästas i spara ”CorrectFormat.xml " förmiddagen för

However i får XMLEN i ett litet olikt, formaterar (fäst i spara ”WrongFormat.xml”)

The kodifierar I '' M genom att använda för att frambringa xmlen är i datan för kodifierasection

The lagras i SQLdatareaderen som gås tillbaka från databasen är som för LEGITIMATIONVALUE
===== för follows

TYPE lungen Cancer
diseases 1 Diabetes
diseases 3 Osteoporosis
diseases 5 Cancer
ethnicity 1 White
ethnicity, 2 för =========
trial 1 === som blandad race
ethnicity 3 Indian


Please hjälper mig att konvertera datan in i XML i den korrekta format
Thanks i förskott!!!
> för
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:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
" codeBody " kriterier för class= för var " = da.getTrialCriteria (trialID); försök { var-xdoc = nya XDocument (nya XDeclaration (”1.0”, ”utf-8”, ”ja”)); var-xroot = nya XElement (”försök”); xdoc. Tillfoga (xroot); stunder (kriterier. Läst ()) { #regionen kopplar meddelande koppla ((stränga), kriterier [”typ”]) { case ”försök”: { var-xElement = nya XElement (”försök”, nya XAttribute (”LEGITIMATION”, kriterier [1]), nya XElement (”namnge”, kriterier [2]) ); xroot. Tillfoga (xElement); avbrott; } fall ”sjukdomar”: { var-xsubroot = nya XElement (”sjukdomar”); xdoc. Tillfoga (xsubroot); var-xElement = nya XElement (”sjukdomen”, nya XAttribute (”LEGITIMATION”, kriterier [1]), nya XElement (”namnge”, kriterier [2]) ); xroot. Tillfoga (xElement); avbrott; } fall ”etnicitet”: { var-xsubroot = nya XElement (”etniciteter”); xdoc. Tillfoga (xsubroot); var-xElement = nya XElement (”etnicitet”, nya XAttribute (”LEGITIMATION”, kriterier [1]), nya XElement (”namnge”, kriterier [2]) ); xroot. Tillfoga (xElement); avbrott; } fall ”bloodGroup”: { var-xsubroot = nya XElement (”bloodGroups”); xdoc. Tillfoga (xsubroot); var-xElement = nya XElement (”bloodGroupen”, nya XAttribute (”LEGITIMATION”, kriterier [1]), nya XElement (”namnge”, kriterier [2]) ); xroot. Tillfoga (xElement); avbrott; } } #endregion } xdoc. Räddning (@ " c: /WrongFormat.xml "); }
Attachments: för >

<-/div> " title= " för den CorrectFormat.xml (663 byte)  " javascript för href= " för Detta är det korrekt formaterar av XMLEN som jag önskar den in <-/div>
för >
<-/div> för >
<-/div> " title= " för den WrongFormat.xml (576 byte)  " javascript för href= " för Detta är fel formaterar av XML I get <-/div>
för >
<-/div> " klar "

Svar : problem med att frambringa XML using LINQ och C#

Hi 2ooth;

Funnen I att detta. Casten (), orsakade rekord som ska inte gås tillbaka. Så jag läste precis dataavläsaren direkt och fyllde en samling av data. Detta bör fungera för dig.

Fernando
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:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
privat lista criterias = nytt listar ();

privat utan laga kraft button1_Click (anmärka avsändaren, EventArgs e),
{
    // får avläsaren från getTrialCriteriaen fungerar
    SqlDataReader dr = getTrialCriteria (trialID);
    // läser datan från avläsaren och skapar en lista anmärker för varje ror
    stunder (dr. Läst ())
    {
        // indexet av dren måste matcha kolonnen som gås tillbaka från dataavläsaren 
        // såväl som fådatatypen måste matcha den gångna tillbaka typen
        Datadata = nya data () {TYP = dr.GetString (0), LEGITIMATION = dr.GetString (1), namnger = dr.GetString (2)};
        // tillfogar de nya datan anmärker till samlingen
        criterias. Tillfoga (data);
    }

    var-query = (från c i criterias
                 gruppera c vid c.City in i groupCity
                 välj groupCityen) .ToList ();

    // skapar XDocumenten och rotar beståndsdelen
    var-xdoc = nya XDocument (nya XDeclaration (”1.0”, ”utf-8”, ”ja”));
    var-xroot = nya XElement (”försök”);
    xdoc. Tillfoga (xroot);
    
    // skapar försökbeståndsdelen och dess barn
    dataförsök = query. Finna == ”FÖRSÖK” (för t-=> t.Key.ToUpper ()) .FirstOrDefault ();
    XElement xTrial = nya XElement (trial.TYPE, 
        nya XAttribute (”LEGITIMATIONEN”, trial.ID),
        nya XElement (”namnge”, trial.name),
        );                
    
    // skapar sjukdombeståndsdelen och alla dess barn  
    XElement sjukdom = nya XElement (”sjukdomar”);
    foreach (data dis i query. Finna, == ”SJUKDOMAR” (för D-=> d.Key.ToUpper ()))
    {
        XElement D = nya XElement (”sjukdom”,
            nya XAttribute (”LEGITIMATIONEN”, dis.ID),
            nya XElement (”namnge”, dis.name)),;
        sjukdom. Tillfoga (D);
    }
    // tillfogar sjukdomen till det xTrial
    xTrial.Add (sjukdom);
    
    // skapar etnicitetbeståndsdelen och alla dess barn  
    XElement etniciteter = nya XElement (”etniciteter”);
    foreach (dataetnicitet i query. Finna, == ”ETNICITET” (för D-=> d.Key.ToUpper ()))
    {
        XElement eth = nya XElement (”etnicitet”,
            nya XAttribute (”LEGITIMATIONEN”, ethnicity.ID),
            nya XElement (”namnge”, ethnicity.name)),;
        etniciteter. Tillfoga (eth);
    }
    // tillfogar etniciteterna till försök
    xTrial.Add (etniciteter);
    // tillfogar allt till rota
    xroot. Tillfoga (xTrial);
    
    xdoc. Räddning (@ " CorrectFormat.xml ");
}
Andra lösningar  
 
programming4us programming4us