我有[text] [text] [text] [text] [text]格式的字符串,我想将其转换为XML语法。我的代码在下面做了这个,但我想知道是否/如何改进它,你会以不同的方式做到吗?
TextReader tr = new StreamReader(@"C:\values.txt");
string message = tr.ReadToEnd().Trim().Replace("][", "|").Replace("[", "").Replace("]", "");
tr.Close();
string[] nodeStart = { "<firstNode>", "<secondNode>", "<thirdNode>", "<fourthNode>", "<fifthNode>" };
string[] nodeEnd = { "</firstNode>", "</secondNode>", "</thirdNode>", "</fourthNode>", "</fifthNode>" };
string[] messageArr = message.Split('|');
StringBuilder sb = new StringBuilder();
sb.AppendLine("<rootNode>");
for(int i = 0; i < messageArr.Length; i++)
{
sb.AppendLine(String.Format("{0}{1}{2}", nodeStart[i], messageArr[i], nodeEnd[i]));
}
sb.AppendLine("</rootNode>");
Console.WriteLine(sb);
Console.ReadLine();
此示例简化了xml的输出/格式 提前谢谢。
答案 0 :(得分:1)
支持我的评论:
使用System.Xml.XmlWriter
这是一篇带有示例的文章: http://msdn.microsoft.com/en-us/library/system.xml.xmltextwriter.aspx
或者使用System.Xml.Linq.XDocument
和XDocument.Save()
http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.save.aspx
答案 1 :(得分:1)
在LINQ中(由于Zip依赖于.NET 4或Silverlight 4):
string[] elementNames = new string[] { "first", "second", "third", "forth", "fifth" };
string input = "[text][text][text][text][text]";
XElement[] elements = input
.Substring(1, input.Length - 1)
.Split("][")
.Zip(elementNames, (value, element) => new XElement(element, value))
.ToArray();
XDocument document = new XDocument(
new XElement("Root", elements)
);
string xml = document.ToString();