2013-04-27 119 views
1

我想用XML文件生成Html代码。 这里是我的xml:基于XML生成Html代码

<XML> 
<Groups> 
<Group Name="Group1"> 
    <Item ID="9A4FA56F-EAA0-49AF-B7F0-8CA09EA39167"/> 
    <Item ID="351FEF76-B826-426F-88C4-DBAAA60F886B"/> 
    <Item ID="96A4CBFC-04CD-4D27-ADE6-585C05E4DBC9"/> 
    <Item ID="D8876943-5861-4D62-9249-C5FEF88219FA"/> 
</Group> 
<Group Name="Group2"> 
    <Item ID="9A4FA56F-EAA0-49AF-B7F0-8CA09EA39167"/> 
    <Item ID="351FEF76-B826-426F-88C4-DBAAA60F886B"/> 
</Group> 
</Groups> 
<Items> 
<Item> 
    <GUID>9A4FA56F-EAA0-49AF-B7F0-8CA09EA39167</GUID> 
    <Type>button</Type> 
    <Title>Save</Title> 
    <Value>submit</Value> 
    <Name>btnsave</Name> 
    <MaxLen>5</MaxLen> 
</Item>  
<Item> 
    <GUID>351FEF76-B826-426F-88C4-DBAAA60F886B</GUID> 
    <Type>text</Type> 
    <Title>Name:</Title> 
    <Name>txtname</Name> 
    <Value>Name</Value> 
    <MaxLen>2</MaxLen> 
</Item>  
<Item> 
    <GUID>02973DCC-5677-417C-A9BF-1578F58923EF</GUID> 
    <Type>text</Type> 
    <Title>Family:</Title> 
    <Name>txtFamiy</Name> 
    <Value>Family</Value> 
    <MaxLen>2</MaxLen> 
</Item> 
<Item> 
    <GUID>96A4CBFC-04CD-4D27-ADE6-585C05E4DBC9</GUID> 
    <Type>checkbox</Type> 
    <Title>I agree to the terms.</Title> 
    <Name>chkagree</Name> 
    <Value>Agree</Value> 
    <MaxLen>10</MaxLen> 
</Item>  
    <Item> 
    <GUID>D8876943-5861-4D62-9249-C5FEF88219FA</GUID> 
    <Type>select</Type> 
    <Title>Type of property</Title> 
    <Name>PropertyType</Name> 
    <Value></Value>  
</Item>  

,我有是,我需要创建每个组和相关的元素给字段标签必须在该字段集的事实问题。

这里是我的C#代码:

XmlTextReader reader = new XmlTextReader(xmlfileaddress); 
     Group objGroup = new Group(); 
     while (reader.Read()) 
     { 
     switch (reader.Name) 
     { 
      case "Groups": 
      while (reader.Read()) 
     { 
      if (reader.NodeType == XmlNodeType.EndElement) 
      break; 
      switch (reader.Name) 
      { 
      case "Group": 
      if (reader.IsStartElement()) 
      { 

      } 
      while (reader.Read()) 
      { 

      if (reader.NodeType == XmlNodeType.EndElement) 
      break; 
      switch (reader.Name) 
      { 
       case "Item": 
       objGroup.ItemIDs.Add(new Guid()); 
       break; 
      } 
      } 
       break; 
      } 
      } 
       break; 

      case "Items":       
      Item objItem = new Item(); 
      while (reader.Read()) 
      { 
      if (reader.NodeType == XmlNodeType.EndElement) 
      break; 
      switch (reader.Name) 
      { 
      case "Item": 
      while (reader.Read()) 
      { 

       if (reader.NodeType == XmlNodeType.EndElement) 
       break; 
       switch (reader.Name) 
       { 
       case "GUID":              
       objItem.Id = reader.ReadElementContentAsString(); 
       break; 

       case "Title": 
       objItem.Title = reader.ReadElementContentAsString(); 
       break; 

       case "Type": 
       objItem.Type = reader.ReadElementContentAsString(); 
       break; 

       case "Value": 
       objItem.Value = reader.ReadElementContentAsString(); 
       break; 

       case "Name": 
       objItem.Name = reader.ReadElementContentAsString(); 
       break; 

       case "MaxLen": 
       objItem.MaxLen = reader.ReadElementContentAsString(); 
       break; 

       } 

       } 
+0

嘿Pedram,我很好奇你如何解决你的问题。 – 2013-04-28 15:04:47

+0

@MartinMulder:尚未解决。谢谢。 – Pedram 2013-04-29 03:59:43

+0

我想我需要为Item和Group声明类,然后再为表单声明类。 这样我可以知道要生成哪个控件 – Pedram 2013-04-29 04:02:43

回答

1

秩你认为XSLT?

XSLT是一种基于XML的语言,用于从XML数据生成另一种基于GML的文件,如HTML。

更多信息请参见:How to apply an XSLT Stylesheet in C#

XSLT(和网络转换器)的例子可以在这里找到:http://www.w3schools.com/xsl/xsl_examples.asp 您可以在该网站上使用您的XML和你的XSLT在你的代码与玩你实现它之前代码在第一个链接。

+0

谢谢@Martin,但我不想将我的XML转换为HTML。 – Pedram 2013-04-27 10:51:04

+0

Perhapse我习惯了不正确的单词。你将永远保持你的XML文件。 XML是您的“数据文件”,XSLT是您的“模板”,通过这两个,您可以生成“结果文件”。您可以根据需要多次重复此过程(例如:在更改xml数据后)。 – 2013-04-27 10:51:54