我有一個XML文件,需要使用XmlWriter在代碼中創建。是否有任何代碼生成器會採用XML並生成c#代碼行以使用XmlWriter重新創建它?從XML生成XmlWriter c#代碼
0
A
回答
1
我把阿努拉格的反應,修改了它,這裏是什麼在爲我工作:
<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Xml" #>
<#@ import namespace="System.Xml" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.IO" #>
using System;
using System.Text;
using System.Xml;
namespace AutoGenerateXmlWriteCode
{
public class TestClass
{
#region Methods
public static void WriteXml()
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "\t";
settings.OmitXmlDeclaration = true;
using(var writer = XmlWriter.Create("out.xml", settings))
{
<#
foreach (XmlReader node in this.GetNames())
{
if(node.NodeType == XmlNodeType.Element) {
#>
writer.WriteStartElement(@"<#= node.Name #>"); // <#= node.Name #>
<#
if (node.HasAttributes)
{
node.MoveToFirstAttribute();
#>
writer.WriteAttributeString(@"<#= node.Name #>", @"<#= node.Value #>");
<#
while (node.MoveToNextAttribute())
{
#>
writer.WriteAttributeString(@"<#= node.Name #>", @"<#= node.Value #>");
<#
}
node.MoveToElement();
}
if (node.IsEmptyElement){
#>
writer.WriteEndElement(); // <#= node.Name #>
<#
}
}
if(node.NodeType == XmlNodeType.Text) {
#>
writer.WriteValue(@"<#= node.Value #>");
<# }
if(node.NodeType == XmlNodeType.EndElement) {
#>
writer.WriteEndElement(); // <#= node.Name #>
<# }
}
#>
}
}
#endregion
}
}
<#+
public IEnumerable<XmlReader> GetNames()
{
List<string> result = new List<string>();
string absolutePath = @"d:\MyFile.xml";
XmlReader rdr = XmlReader.Create(absolutePath);
while (rdr.Read())
{
yield return rdr;
}
}
#>
+0
我很高興它爲你工作 – 2012-04-05 02:24:50
0
2
您可以編寫自己的T4 Template
下面是一些代碼,讓你開始:
<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<# assembly name="System.Xml" #>
<#@ import namespace="System.Xml" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.IO" #>
using System;
using System.Text;
using System.Xml;
namespace Test
{
public class TestClass
{
#region Methods
public static void WriteXml()
{
using(var writer = XmlWriter.Create("out.xml"))
{
<#
foreach (XmlNode node in this.GetNames())
{
if(node.NodeType == XmlNodeType.Element) {
#>
writer.WriteStartElement(@"<#= node.Name #>");
<# }
if(node.NodeType == XmlNodeType.Comment) {
#>
writer.WriteComment(@"<#= node.Value #>");
<# }
}
#>
}
}
#endregion
}
}
<#+
public IEnumerable<XmlNode> GetNames()
{
List<string> result = new List<string>();
XmlDocument doc = new XmlDocument();
string absolutePath = @"c:\data\XMLFile1.xml";
doc.Load(absolutePath);
foreach (XmlNode node in doc.ChildNodes)
{
yield return node;
}
}
#>
相關問題
- 1. 從C#生成XML代碼
- 2. 生成PHP代碼,將生成XMLWriter的目標XML現在
- 3. 寫XML的代碼XMLWriter的
- 4. 從* .slx生成C++代碼
- 5. 從C#代碼生成彙編代碼?
- 6. 從XML文檔生成LINQ to XML C#代碼?
- 7. C++中的動態XML代碼生成
- 8. gsoap用XML數據生成C++代碼
- 9. C++代碼/ XML生成工具
- 10. XML DataBinding和C++代碼生成器
- 11. 從XML字符串生成XElement代碼
- 12. 在Eclipse中從XML生成Java代碼
- 13. C++代碼生成
- 14. C#代碼生成
- 15. 代碼生成 - XML到Java
- 16. 從XML生成C#代碼:如何輸出'<' and '>'?
- 17. C#從接口生成代碼
- 18. 從C#代碼生成UML圖
- 19. 如何從C#.NET代碼生成JS
- 20. 從C生成機器代碼
- 21. 代碼生成從C#POCO類
- 22. 從類圖生成Objectivec C代碼
- 23. 如何從ICompilationUnit(ICSharpCode)生成C#代碼
- 24. 如何從C#生成XML?
- 25. C#XML代碼生成的XML輸出中的格式錯誤
- 26. MATLAB C++代碼生成
- 27. 如何生成c#代碼?
- 28. C#SQLMetal生成的代碼
- 29. 用於C++代碼生成
- 30. Matlab simulink c代碼生成
爲什麼使用XmlWriter?使用LINQ to XML更簡單。不,我從來沒有聽說過這樣的工具。 – 2012-04-03 22:36:06