使用c#将逗号分隔的字符串转换为XML

时间:2022-07-02 21:49:18

I want to convert the string to XML. I have a string like below. It contains the Programming language names.

我想把字符串转换成XML。下面有一条线。它包含编程语言名称。

string lang = "java,php,c#,asp.net,spring,hibernate";

I want to convert this string to XML formal like below:

我想把这个字符串转换成如下所示的XML形式:

<Languages>
  <lang Name="java"/>
  <lang Name="php"/>
  <lang Name="c#"/>
  <lang Name="asp.net"/>
  <lang Name="spring"/>
  <lang Name="hibernate"/>
</Languages>

I want to store this XML data in a variable to store later in a database.

我想将这个XML数据存储在一个变量中,以便稍后在数据库中存储。

4 个解决方案

#1


11  

It can also be done using Linq-to-XML:

也可以使用linqto - 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);

#2


2  

A short version of what you have done, using Linq and the string manipulation functions

使用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);

The other option is to convert your csv into a model that implements ISerialize and then use the xml serializer. That is more code and not necessarily bad. If you would like to see an example, feel free to ask and I will post an example.

另一个选项是将csv转换为实现ISerialize的模型,然后使用xml序列化器。这是更多的代码,不一定是坏的。如果您想看到一个例子,请随意提问,我将发布一个例子。

#3


1  

This is working,

这是工作,

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();
        }
    }

#4


1  

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 
});

#1


11  

It can also be done using Linq-to-XML:

也可以使用linqto - 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);

#2


2  

A short version of what you have done, using Linq and the string manipulation functions

使用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);

The other option is to convert your csv into a model that implements ISerialize and then use the xml serializer. That is more code and not necessarily bad. If you would like to see an example, feel free to ask and I will post an example.

另一个选项是将csv转换为实现ISerialize的模型,然后使用xml序列化器。这是更多的代码,不一定是坏的。如果您想看到一个例子,请随意提问,我将发布一个例子。

#3


1  

This is working,

这是工作,

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();
        }
    }

#4


1  

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 
});