簡體   English   中英

使用C#將逗號分隔的字符串轉換為XML

[英]Convert Comma separated string to XML using C#

我想將字符串轉換為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);

使用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序列化程序。 這是更多的代碼,而不一定是壞的。 如果你想看一個例子,請隨意提問,我會發一個例子。

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

這很有用,

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM