2016-10-10 1 views
-2

Ich arbeite in C#. Ich benutze XSL Transformationen (XSLT) Version 1.0. https://www.w3.org/TR/xslt I Xslt verwenden, um XML-Daten aus den Daten in der Klasse zu erstellen MyClass MyClass der Schablone übereinstimmt und hat eine EigenschaftIterieren über die Liste der Zeichenfolgen in xslt und mit Index

List<string> Strings 

Ich brauche es auf diese Weise zu exportieren:

<Line1> first string value Here </Line1> 
<Line2> Second string value here </Line2> 
. 
. 
. 

Could jemand mir helfen zu realisieren, wie es geht? Alles Gute Tal

+0

Ich verstehe es nicht. Können Sie ein expliziteres XML-Quellbeispiel bereitstellen? – Xenos

+0

Sie sagen "Ich habe eine Klasse, um die Vorlage mit einer Eigenschaft abzugleichen". In welcher Programmiersprache ist das? Welchen XSLT-Prozessor verwenden Sie? Die Interaktion zwischen XSLT und anderen Programmiersprachen hängt sehr stark vom jeweiligen Prozessor, seiner API und der Programmierplattform ab. –

+0

Ich bin mit XSLT in Java vertrauter, aber das scheint nicht das Ding zu sein, das XSLT tut. Sie suchen nach einem XML-Serializer. XSLT dient zum Umwandeln von XML in andere XML. Etwas schnelles Googeln hat mir folgendes gefunden: [Wie man ein Objekt in C# zu XML serialisiert] (https://support.microsoft.com/en-us/kb/815813). –

Antwort

0

ich eine Lösung gefunden zu haben. Vielleicht gibt es eine bessere ... Ich habe ein neues ExportClass erstellt:

public class ExportString 
{ 
    [XmlElement("StringObject")] 
    public string StringObject{get; set;} 
} 

ich eine Liste als Objekt erstellt haben, wird die MyExportClass, die die XSLT-Spiele:

public class MyExportClass 
{ 
    [XmlElement("LOS"] 
    public List<StringObject> LOS<get; set;} 
} 

ich diese verwendet haben Syntax in der XSLT: der Code enthält Index in dem Namen des Elements:

<xsl:for-each select="LOS" xml:space="default"> 

//Get the index 
    <xsl:variable name ="index" select="position()"/> 

    <xsl:element name ="Line{$index}"> 
    <xsl:value-of select = "StringObject"/> 
    </xsl:element> 

    //Line break 
    <xsl:text> &#xa;</xsl:text> 
</xsl:for-each> 

Ergebnis:

<Line1> my first string </Line1> 
<Line2> my second string </Line2> 
. 
. 
. 
1

Ganz einfach:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Xml; 
using System.Xml.Linq; 


namespace ConsoleApplication16 
{ 
    class Program 
    { 

     static void Main(string[] args) 
     { 
      List<string> Strings = new List<string>() { 
        "first string value Here", 
        "Second string value here" 
      }; 

      List<XElement> output = Strings.Select((x, i) => new XElement("Line" + (i + 1).ToString(), x)).ToList(); 
     } 

    } 

} 
+0

Danke für die Antwort. Ich muss xslt Vorlage verwenden. – tal

Verwandte Themen