使用 C# 将逗号分隔的字符串转换为 XML
本文关键字:字符串 转换 XML 分隔 使用 | 更新日期: 2023-09-27 18:36:28
我想将字符串转换为XML。我有一个如下所示的字符串。它包含编程语言名称。
string lang = "java,php,c#,asp.net,spring,hibernate";
我想将此字符串转换为XML形式,如下所示:
<Languages>
<lang Name="java"/>
<lang Name="php"/>
<lang Name="c#"/>
<lang Name="asp.net"/>
<lang Name="spring"/>
<lang Name="hibernate"/>
</Languages>
我想将此 XML 数据存储在一个变量中,以便稍后存储在数据库中。
也可以使用 Linq-to-XML 来完成:
using System.Xml.Linq; // required namespace
XDocument xmlDoc = new XDocument();
XElement xElm = new XElement("Languages",
from l in lang.Split(',')
select new XElement("lang", new XAttribute("Name", l)
)
);
xmlDoc.Add(xElm);
string lang = "java,php,c#,asp.net,spring,hibernate";
string[] langs = lang.Split(',');
XmlDocument document = new XmlDocument();
XmlElement root = document.CreateElement("Languages");
document.AppendChild(root);
for (int i = 0; i < langs.Length; i++)
{
XmlElement langElement = document.CreateElement("lang");
XmlAttribute nameAttr = document.CreateAttribute("Name");
nameAttr.Value = langs[i];
langElement.Attributes.Append(nameAttr);
root.AppendChild(langElement);
}
document.WriteTo(new XmlTextWriter(Console.Out) {
Formatting = Formatting.Indented
});
使用 Linq 和字符串操作函数所做操作的简短版本
var vales = lang.Split(','); //Splits the CSV
var xmlBody = vales.Select(v => string.Format("<lang Name='"{0}'"/>",v));
var xml = string.Join(string.Empty, xmlBody); //Potentially add a new line as a seperator
xml = string.Format("<Languages>{0}</Languages>", xml);
另一种选择是将 csv 转换为实现 ISerialize 的模型,然后使用 xml 序列化程序。 这是更多的代码,不一定是坏的。 如果您想查看示例,请随时询问,我将发布示例。
这是
有效的,
class Program
{
static void Main(string[] args)
{
string lang = "java,php,c#,asp.net,spring,hibernate";
StringBuilder sb = new StringBuilder();
sb.AppendFormat("<Languages>");
foreach (string s in lang.Split(','))
{
sb.AppendFormat("<lang Name='"{0}'"/>", s);
}
sb.AppendFormat("</Languages>");
Console.WriteLine(sb.ToString());
Console.ReadLine();
}
}