Avatar billede hojgaard Nybegynder
25. september 2003 - 20:40 Der er 9 kommentarer og
1 løsning

XmlReader > valid xml

Hej,

Jeg udtrækker data i xml-format fra en SQL server vha. ExecuteXmlReader().

Mit spørgsmål er:
Hvordan kan jeg udskrive xml'en igen "well-formed"?

Hvornår skal jeg bruge ReadOuterXml(), ReadInnerXml(), osv.?
Avatar billede nielslbeck Nybegynder
25. september 2003 - 20:43 #1
Den XML du får ud, skulle da vel gerne være well-formed... Men tænker du på, hvordan du udskriver den indenteret, så den bliver letlæselig?
Avatar billede arne_v Ekspert
25. september 2003 - 20:49 #2
Well-formed har en meget specifik betyding i XML og den XML du får ud
er med garanti well-formed (i XML betydning).

Forskellen på ReadOuterXml og ReadInnerXml er at den første læser
selve start og slut tag med mens den anden ikke gør.
Avatar billede hojgaard Nybegynder
25. september 2003 - 20:50 #3
Nej ikke hvordan den bliver letlæselig.

XML'en jeg modtager fra SQL Serveren er helt sikkert well-formed. Mit problem er at udskrive den igen fra min XmlReader i C# så den igen bliver well-formed.

Lige nu udskriver jeg bare XML'en med: myXmlReader.ReadInnerXml()
Når jeg validerer output er den ikke well-formed.

Skal jeg både bruge ReadOuterXml() og ReadInnerXml() for at generere XML'en igen ud fra min XmlReader?
Avatar billede arne_v Ekspert
25. september 2003 - 20:54 #4
Svært at sige uden at se hvad der komme rud.

Men umiddelbart ville jeg da tro at du skulle have start og slut tag
med (altså outer).
Avatar billede hojgaard Nybegynder
25. september 2003 - 20:59 #5
Når jeg kun bruger ReadOuterXml() får jeg følgende resultat:

<?xml version="1.0" encoding="UTF-8"?>

<Schema name="Schema1" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
    <ElementType name="tilmeldtkursus" content="empty" model="closed">
    <AttributeType name="tilmeldtkursusid" dt:type="i4" />
    <AttributeType name="medlemid" dt:type="i4" />
    <AttributeType name="tidspunktid" dt:type="i4" />
    <AttributeType name="isKlasseundervisning" dt:type="ui1" />
    <AttributeType name="isFjernundervisning" dt:type="ui1" />
    <attribute type="tilmeldtkursusid" /><attribute type="medlemid" />
    <attribute type="tidspunktid" />
    <attribute type="isKlasseundervisning" />
    <attribute type="isFjernundervisning" />
    </ElementType>
</Schema>

<tilmeldtkursus xmlns="x-schema:#Schema1" tilmeldtkursusid="77" medlemid="109" tidspunktid="83" isKlasseundervisning="0" isFjernundervisning="1" /><tilmeldtkursus xmlns="x-schema:#Schema1" tilmeldtkursusid="79" medlemid="110" tidspunktid="52" isKlasseundervisning="1" isFjernundervisning="0" />
<tilmeldtkursus xmlns="x-schema:#Schema1" tilmeldtkursusid="81" medlemid="113" tidspunktid="63" isKlasseundervisning="1" isFjernundervisning="0" /><tilmeldtkursus xmlns="x-schema:#Schema1" tilmeldtkursusid="83" medlemid="116" tidspunktid="99" isKlasseundervisning="1" isFjernundervisning="0" />
<tilmeldtkursus xmlns="x-schema:#Schema1" tilmeldtkursusid="87" medlemid="127" tidspunktid="46" isKlasseundervisning="1" isFjernundervisning="0" /><tilmeldtkursus xmlns="x-schema:#Schema1" tilmeldtkursusid="89" medlemid="128" tidspunktid="38" isKlasseundervisning="1" isFjernundervisning="0" />

I kan nok let se mit problem
Avatar billede arne_v Ekspert
27. september 2003 - 23:12 #6
Hvordan får du det output ud ?

        SqlCommand cmd = new SqlCommand("SELECT * FROM T1 FOR XML AUTO", con);
        XmlReader rdr = cmd.ExecuteXmlReader();
        rdr.Read();
        string s;
        do {
            s = rdr.ReadOuterXml();
            if(s!="")
            {
                Console.WriteLine(s);
            }
        } while(s!="");
        rdr.Close();

giver mig output som:

<T1 F1="1" F2="A" />
<T1 F1="2" F2="BB" />
<T1 F1="3" F2="CCC" />

og det mangler jo kun XML header + start og slut tag for at være
well-formed XML.
Avatar billede odegaard Nybegynder
01. oktober 2003 - 10:47 #7
Jeg plejer at knytte et XML Schema til mine XML data. På denne måde sikrer jeg mig at den opfylder visse krav (fx. om en kolonne er unik, om den har under-kolonner osv).
Avatar billede wisen Nybegynder
03. november 2003 - 10:04 #8
Jeg er ikke helt med - hvad er det præcist du mener med "well formed"... er det fordu du gerne vil have værdierne som XMLNodes istedet for een XMLNode med attributter?
Avatar billede wisen Nybegynder
03. november 2003 - 10:07 #9
Denne side har jeg har en del glæde af : http://www.topxml.com/sql/for_xml_auto.asp
Avatar billede hojgaard Nybegynder
18. august 2010 - 11:50 #10
Lukker...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester