2 Stimmen

Wie bekomme ich dann XML-Filter aus einer SQL Server 2000 DB?

Ich habe eine Tabelle in SQL Server 2000 mit einem Textfeld, das XML enthält, das ich auf einer C# ASP.NET 2.0-Seite anzeigen muss. Ich muss das XML abrufen und dann eine Liste von ca. 80 möglichen Elementen filtern (oder es wäre vielleicht besser, 20 mögliche Elemente zu behalten).

Ich kann das XML aus der DB ziehen und auf meiner .aspx-Seite anzeigen, bin mir jedoch nicht sicher, wie ich zuerst Elemente herausfiltern kann.

Beispiel XML

    1234

    Auto Benachrichtigung

    5501

    121223

    654321

    2010-11-10 09:35:00

In diesem Fall muss ich die UPMessageNumber und MessageID herausfiltern, bevor ich sie auf der Seite anzeige.

Vielen Dank für alle Ideen.

3voto

Steve Townsend Punkte 52288

Sie können dies mit Hilfe von XSLT durchführen, um das Eingangs-XML in eine modifizierte Ausgabe umzuwandeln.

Ein C# Beispiel finden Sie hier.

Dieser Schritt-für-Schritt-Artikel zeigt Ihnen, wie Sie eine Extensible Stylesheet Language (XSL) Transformation (XSLT) auf ein Extensible Markup Language (XML)-Dokument anwenden können, indem Sie die XslTransform-Klasse verwenden, um ein neues XML-Dokument zu erstellen. XSL ist eine auf XML basierende Sprache, die dazu konzipiert ist, ein XML-Dokument in ein anderes XML-Dokument oder aber in ein beliebig strukturiertes Dokument zu transformieren.

Die vorherige Frage hier behandelt direkt, wie man XSL für das Entfernen von Elementen konstruiert.

Ich denke, das XSL, das Sie benötigen, ist:

Das erste xsl:template kopiert standardmäßig alle Knoten. Das zweite lässt die benannten Elemente aus.

1voto

Ta01 Punkte 30128

Wenn Sie es auf einfache Weise tun möchten, könnten Sie die DataSet-Klasse verwenden, um Ihr XML zu lesen, und dann einen DataView-Filter verwenden.

    DataSet ds = new DataSet();
    ds.ReadXml(@"C:\so.xml");
    DataTable dt = ds.Tables[0];
    DataView dv = dt.DefaultView;
    dv.RowFilter = "Ihr Zeilenfilter"; //"MessageNumber<>4567" oder einen Filter konstruieren mit //einem Hilfsprogramm
    //dv an Grid binden??

Sobald Sie Ihre Daten in einem Dataset haben, können Sie allerlei Dinge tun, wie z.B. selektive Anzeige von Spalten. Ich bin mir nicht sicher, ob Sie die Daten aus einer Abfrageperspektive filtern wollten oder Daten "verstecken" wollten, während sie immer noch vorhanden sind.

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