6 Stimmen

.NET Xsl-Skripttransformationsergebnisse in der Meldung 'System.Object' ist nicht definiert oder importiert

Ich bin ein XSL-Neuling, aber völlig stecken geblieben!

Ich habe eine Transformierung, die ein Datum mit der C#-Skriptfunktion formatiert. Dies funktioniert einwandfrei, wenn ich in VS 2008 bin und "XML-Ausgabe anzeigen" ausführe; die Ausgabe ist genau das, was ich will.

Wenn ich jedoch versuche, dies mit Code auszuführen, erhalte ich den Fehler

Vordefinierter Typ 'System.Object' ist nicht definiert oder importiert

Die Funktion zum Aufrufen der Transformation sieht so aus, sie ist ziemlich grundlegend und funktionierte, bevor ich begann, Skripts zu verwenden

public static string RunXSLT(string xsltFile, string inputXML)
{

    XslCompiledTransform transform = new XslCompiledTransform();
    XsltSettings settings = new XsltSettings();
    settings.EnableScript = true;

    transform.Load(xsltFile, settings, null);

    StringReader sReader = new StringReader(inputXML);
    XmlTextReader xmlTextReader = new XmlTextReader(sReader);

    // Erstelle einen XmlTextWriter, der in den Speicherstrom ausgibt
    Stream stream = new MemoryStream();
    XmlWriter xmlWriter = new XmlTextWriter(stream,> System.Text.Encoding.UTF8);

    transform.Transform(xmlTextReader, xmlWriter);

    stream.Position = 0;

    XmlDocument XmlDoc = new XmlDocument();
    XmlDoc.Load(stream);

    return XmlDoc.OuterXml;
}

Die XSL-Transformation sieht so aus..

      http://www.nlb.org

4voto

Tintenfiisch Punkte 360

Ich weiß, dass dieses Problem sehr alt ist, aber vielleicht hilft es jemandem, der nach diesem Problem sucht.

Ich bin derzeit auf den gleichen Kompilierungs-Fehler gestoßen, aber in einem völlig anderen Thema der C#-Programmierung.

Ich benutze Sharp Develop 4.2 und hatte das gleiche Problem. Für mich war die Lösung, "mscorlib" zu den Referenzen des Projekts hinzuzufügen.

Dieser Fehler ist ein bekanntes Problem von Microsoft, aber ich kenne die aktuelle Situation nicht. Habe nur einige Diskussionen aus dem Jahr 2010 gefunden.

Irgendwie fehlte diese Referenz und ich verstehe momentan nicht vollständig, warum andere Projekte von mir ohne explizite Referenz auf mscorlib funktionieren, aber vielleicht ist das in der Tat der Fehler selbst ;-)

Mit freundlichen Grüßen Thomas

1voto

Marc Gravell Punkte 970173

Kann nicht reproduzieren (tatsächlich verwenden Sie die Erweiterung nicht in Ihrem xslt). Ich habe es getestet, indem ich (zum xslt hinzugefügt habe):

und den Eingabe-XML verwendet habe:

string xml = new XElement("xml", DateTime.Now).ToString();

Und es hat gut funktioniert (ich habe zu XmlConvert.ToDateTime geändert, um das xsd-Format anzupassen, aber es hat auf jede Weise funktioniert).

Wenn es ein Problem gibt, liegt es im Code, den Sie uns nicht zeigen.

0voto

Chris Punkte 201

Hier ist ein einfacheres Beispiel, (sorry wegen Tippfehler), wieder funktioniert dies in VS2008, indem man das XML gegen das Stylesheet ausführt, aber wenn ich den C#-Code verwende, bekomme ich

Vordefinierter Typ 'System.Object' ist nicht definiert oder importiert

Code

public void RunFileXSLT()
{
    // Öffne books.xml als XPathDocument.
    XPathDocument doc = new XPathDocument("c:\\temp\\raw.xml");

    // Erstelle einen Writer zum Schreiben der transformierten Datei.
    XmlWriter writer = XmlWriter.Create("c:\\temp\\OutputTest.xml");

    // Erstelle und lade die Transformation mit aktivierter Skriptausführung.
    XslCompiledTransform transform = new XslCompiledTransform();
    XsltSettings settings = new XsltSettings();
    settings.EnableScript = true;
    transform.Load("c:\\temp\\Simple.xslt", settings, null);

    // Führe die Transformation aus.
    transform.Transform(doc, writer);
}

Das XML ist folgendes

     11/11/2009

   11/11/2009

Die Transformation ist folgende

      http://www.a-website.com

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X