将名称值对转换为xml

时间:2009-08-17 11:45:33

标签: c# asp.net xml xpath

给出一组名称 - 值对形式的数据如何将其构造成xml?

例如:

标题:先生

姓名:John

姓:Doe

作为有效的xml sililar to:

<Data>
<Title>Mr</Title>
<Name >John</Name >
<Surname >Doe</Surname >
</Data>

6 个答案:

答案 0 :(得分:2)

假设你有一个包含键值对的字典......就像..

XElement xe = new XElement("Data", from kvp in dict
                           select new XElement(kvp.Key, kvp.Value));

答案 1 :(得分:1)

假设您使用的是.NET:

  1. XmlWriter
  2. XmlArrayAttributeXmlArrayItem

答案 2 :(得分:0)

您可以使用System.Linq.Xml中的XElement

来实现
var data=nameValuePair.Value;
var xelement=new XElement("Data",
                         new XElement("Title",data.Title),
                         new XElement("Name",data.Name),
                         new XElement("Surname",data.Surname));

这回答你的问题吗?

答案 3 :(得分:0)

无论您做什么,都可以使用支持XML的API来执行此操作。不要简单地读取字符串并在标记之间写出。它很诱人,因为它很方便,但您必须担心字符和实体编码才能正确生成XML。

答案 4 :(得分:0)

如果所有数据始终采用上述形式&amp;你有一堆, 创建一个包含成员和班级的班级将其序列化为xml。

    public class test
    {
     public string title;
     public string name;
     public string surname;
    } 

    void  main()
    {
    List<test> t =  new List<test>();

    test t1 = new test();
    t1.title = "Mr.";
    t1.name = "John";
    t1.surname = "Doe";
    .
    .
    .
    test tn = new test();
    t.Add(t1);
    t.Add(t2);
    .
    .
    .
    .
    t.Add(tn);


    //Serialize to xml.
    try
    {
                    using (FileStream fs = new FileStream(szFileName, FileMode.Create))
                   {
                      XmlSerializer xs = new XmlSerializer(typeof(List<test>));
                      xs.Serialize(fs, t);
                   }

    }
    catch(Exception Ex)
    {
     Messagebox.Show(Ex.ToString());
    }


    //And deserialize the data from xml to objects
try
{
                      using (System.IO.FileStream fs = new FileStream(szDataFile,FileMode.Open))
                      {
                         System.Xml.Serialization.XmlSerializer xs = new XmlSerializer(typeof(List<test>));
                         List<test> t1 = new List<test>();
                        t1 =  xs.Deserialize(fs) as List<test>;
                      }
 }
 catch(Exception Ex)
 {
     Messagebox.Show(Ex.ToString());
 }

}

答案 5 :(得分:0)

使用Gelatin语法:

define nl /[\r\n]/
define ws /\s+/
define fieldname /\w+/
define value /[^\r\n,]/

grammar input:
    match nl:
        do.skip()
    match fieldname ':' ws value nl:
        out.add('$0', '$3')