Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C从自定义文件读取_C#_File_Code Snippets_Config - Fatal编程技术网

C# C从自定义文件读取

C# C从自定义文件读取,c#,file,code-snippets,config,C#,File,Code Snippets,Config,好的,我已经读到.INI文件现在已经过时,.NETFramework创建者希望我们使用.XML文件。但是,我觉得我的一些用户很难使用.XML文件,所以我考虑创建一个自定义配置文件 我有一个列表字符串,它有3个参数,实际上是闪烁体中的snippet函数,如下所示: Snippet.Insert("Name", "Code", 'char'); 现在,我想插入用户可以自己添加的文件中的所有片段,包括名称、代码和字符,但我不知道该如何做。可能是这样的: [Snippet1] [Snippet1Cod

好的,我已经读到.INI文件现在已经过时,.NETFramework创建者希望我们使用.XML文件。但是,我觉得我的一些用户很难使用.XML文件,所以我考虑创建一个自定义配置文件

我有一个列表字符串,它有3个参数,实际上是闪烁体中的snippet函数,如下所示:

Snippet.Insert("Name", "Code", 'char');
现在,我想插入用户可以自己添加的文件中的所有片段,包括名称、代码和字符,但我不知道该如何做。可能是这样的:

[Snippet1] [Snippet1Code] [Snippet1Char]
[Snippet2] [Snippet2Code] [Snippet2Char]
[Snippet3] [Snippet3Code] [Snippet3Char]

然而,我不知道我将如何以这种方式解读这些值。如果有人能告诉我一种从文件中读取代码片段的有效方法,我将不胜感激。

为什么不直接用您提到的xml格式设置代码片段,然后用XMLTextReader阅读呢

非常直截了当

<snippets>

  <snippet name="Name1" char="a">
    <snippetCode>
      for(int i = 0; i < 10; i++) { // do work }
    </snippetCode>
  </snippet>

  <snippet name="Name2" char="b">
    <snippetCode>
      foreach(var item in items) { // do work }
    </snippetCode>
  </snippet>

</snippets>
C


正如其他人所建议的,与@gmcalab的方法类似,这里有一个使用的快速示例


如果您喜欢ini文件,我已经读到了一些关于

的好东西,我认为这对您的用户来说可能比.XML文件更困难。您的问题是什么?从文件中读取?将每行切片为三个参数?当用户在一行中只放置两个单词时的错误处理?好的,那么我想我将坚持使用XML文件。我的问题是我不知道一个好的方法来实现这一点,但我现在可能只使用一个XML文件。括号是元素的一部分吗?示例的测试是否会被编码为[Name][Code][char]?要阅读XML,只需选择一个随机的SO问题作为提示,例如:我会选择XmlSerializer方法,可能也会创建一个XSD,但Linq2XML同样容易。关于这一点的问题。在处理.XML文件时,我实际上如何将代码片段添加到列表中?嘿,谢谢,尽管我自己也弄明白了。不过谢谢你给我这个主意,真的很感激;
public class Snippet
{
    public string Name {get;set;}
    public char Char { get; set;}
    public string Value { get; set;}
}   

List<Snippet> Snippets = new List<Snippet>();

XmlTextReader reader = new XmlTextReader ("snippets.xml");

Snippet snippet = new Snippet();

while (reader.Read()) 
{
    // Do some work here on the data.
    switch (reader.NodeType) 
    {
        case XmlNodeType.Element: 

        if(reader.Name == "snippet"){

           while (reader.MoveToNextAttribute())
           {
              if(reader.Name == "Name"){
                 // get name attribute value
                 snippet.Name = reader.Value;
              }
              else if(reader.Name == "Char"){
                 // get char attribute value
                 snippet.Char = Char.Parse(reader.Value);
              }

           } 
        } 

        break;

        case XmlNodeType.Text: //Display the text in each element.
           //Here we get the actual snippet code
           snippet.Value = reader.Value; 

        break;

        case XmlNodeType. EndElement:

            if(reader.Name == "snippet"){
               // Add snippet to list
               Snippets.Add(snippet);
               // Create a new Snippet object
               snippet = new Snippet();
            }

        break;  

    }
}
public class Snippet
{
    public string Name { get; set; }
    public string Code { get; set; }
    public char Character { get; set; }
}


XDocument doc = XDocument.Parse(@"<snippets>
                                  <snippet name='snippet1' character='a'> 
                                     <![CDATA[ 
                                       // Code goes here  
                                       ]]>
                                  </snippet>
                                  <snippet name='snippet2' character='b'> 
                                    <![CDATA[ 
                                       // Code goes here
                                        ]]> 
                                  </snippet>
                                </snippets>");

List<Snippet> snippetsList = (from snippets in doc.Descendants("snippet")
                             select new Snippet
                             {
                                 Name = snippets.Attribute("name").Value,
                                 Character = Convert.ToChar(snippets.Attribute("character").Value),
                                 Code = snippets.Value
                             }).ToList();

snippetsList.ForEach(s => Console.WriteLine(s.Code));