Avatar billede bruhnsweb Nybegynder
06. maj 2009 - 05:49 Der er 1 kommentar

Transformer XML og XSLT

Hej Eksperter,

Jeg har en funktion som via LINQ laver en xml stream ud fra min SQL database.

public string GetWebsiteStructureAsXML()
    {
        DataClassesDataContext dc = new DataClassesDataContext();
        var websiteStructure = (from p in dc.GetTable<dbPages>()
                                select p);
       
        System.Xml.Linq.XDocument _xml = new System.Xml.Linq.XDocument();
        XElement _xp = new XElement("pages");

        foreach (var _p in websiteStructure)
        {
            _xp.Add(new XElement("page",
                new XElement("pageID", _p.PageID),
                new XElement("pageName", _p.PageName)));
        }
        _xml.Add(_xp);

        return (_xml.ToString());

    }

Det virker fint!!!

Så har jeg en funktion som hedder GetContent() som bliver kaldt fra min default.aspx - Denne skal transformere en XSLT template og min xml stream. Virker ikke så godt :-(

public string GetContent()
    {
        //load the Xml doc
        string sXmlPath = GetWebsiteStructureAsXML();
        XPathDocument myXPathDoc = new XPathDocument(sXmlPath);

        XslCompiledTransform myXslTrans = new XslCompiledTransform();

        //load the Xsl
        string sXslPath = "/Templates/MainTemplate.xslt";
        myXslTrans.Load(sXslPath);

        //create the output stream
        StringBuilder sb = new StringBuilder();
        XmlWriter myWriter = XmlWriter.Create(sb);

        //do the actual transform of Xml
        myXslTrans.Transform(myXPathDoc, null, myWriter);

        myWriter.Close();

        return sb.ToString();
    }



Jeg får fejlen:
Illegal characters in path.

Line 29:        //load the Xml doc
Line 30:        string sXmlPath = GetWebsiteStructureAsXML();
Line 31:        XPathDocument myXPathDoc = new XPathDocument(sXmlPath);

Er der en af jer kvikke hoveder som kan se hvad jeg gør galt???

// Bruhn
Avatar billede bvli Praktikant
06. maj 2009 - 20:52 #1
Den constructor du bruger til XPathDocument forventer en path til dokumentet den skal læse og ikke selve dokumentet.

Enten kan du skrive den til en temp fil og læse den ind i contstructor'en (dårlig stil) eller også kan du bruge den constructor som tager en textreader og give den en stringreader som er initialiseret med din streng.

/B :)
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