2016-10-10 70 views
-2

我使用C#工作。 我使用XSL转换(XSLT)版本1.0。 https://www.w3.org/TR/xslt 我使用XSLT,以创建从类中的数据的XML MyClass的 MyClass的模板匹配,并且有一个属性在xslt中迭代字符串列表,并使用索引

List<string> Strings 

我需要这样导出:

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

有人帮助我实现如何做到这一点? 所有最优秀的 塔尔

+0

我不明白。你能提供一个更明确的XML源代码示例吗? – Xenos

+0

你说“我有一个课程将模板与属性相匹配”。那是哪种编程语言?你使用哪种XSLT处理器? XSLT和其他编程语言之间的交互很大程度上取决于特定的处理器,API和编程平台。 –

+0

我更熟悉Java中的XSLT,但这看起来不像XSLT所做的。您正在寻找一个XML序列化器。 XSLT用于将XML转换为不同的XML。一些快速谷歌搜索找到了我:[如何在C#中将对象序列化为XML](https://support.microsoft.com/zh-cn/kb/815813)。 –

回答

0

我已经找到了解决办法。也许有一个更好的......我 已经创建了一个新的ExportClass:

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

我创建了一个列表,属性的XSLT匹配MyExportClass:

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

我已经使用这个语法在XSLT: 的代码包括在该元素的名称索引:

<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> 

结果:

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

很简单:

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

谢谢你的回答。我需要使用xslt模板。 – tal

相关问题