繁体   English   中英

将名称值对转换为xml

[英]convert name value pairs to xml

给定一堆名称-值对形式的数据,如何将其构造为xml?

例如:

职称:先生

姓名:约翰

姓:母鹿

作为有效的xml到:

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

假设您有一本包含键值对的字典。

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

假设您使用的是.NET:

  1. XmlWriter
  2. XmlArrayAttributeXmlArrayItem

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

这是否回答您的问题?

无论您做什么,都可以使用支持XML的API来实现。 不要简单地读取字符串并在标签之间写出来。 由于方便,这很诱人,但是您必须担心字符和实体编码才能正确生成XML。

如果所有数据始终都是上述形式,并且您有一堆数据,请创建一个具有成员的类并将其序列化为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());
 }

}

使用以下语法使用明胶

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')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM