簡體   English   中英

如何獲取數組變量另存為文件名輸出?

[英]How do I get a array variable to save as the file name output?

我正在嘗試編寫幾乎沒有編程經驗的C#程序,以獲取一個csv文件並輸出一個XML文件。 此方法有效,但我現在嘗試將程序修改為它將為CSV的每一行輸出XML文件的位置,並將XML文件命名為與fields [0]“ name”值相等。 我不確定自己在做什么錯,編譯器在說當前上下文中不存在名稱“ fields”。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml.Linq;

namespace CSVtoXML
{
    class Program
    {
        static void Main(string[] args)
        {
            // Read into an array of strings.
            string[] source = File.ReadAllLines("import.csv");
            foreach (string line in source)
            {
                XElement cust = new XElement("Root",
                    from str in source
                    let fields = str.Split(',')
                    select new XElement("other_asset",
                        new XElement("name", fields[0]),
                        new XElement("status", new XElement("name", fields[1])),
                        new XElement("asset_type", new XElement("name", fields[2])),
                        new XElement("ip", fields[3]),
                        new XElement("manufacturer", fields[4]),
                        new XElement("model", fields[5]),
                        new XElement("serial_number", fields[6]),
                        new XElement("site", new XElement("name", fields[7])),
                        new XElement("department", new XElement("name", fields[8])),
                        new XElement("custom_field",
                            new XElement("location", fields[9]),
                            new XElement("Mac_Address", fields[10]),
                            new XElement("End_User", fields[11]),
                            new XElement("Notes", fields[12])
                        )
                    )
                );
                cust.Save(fields[0] + ".xml");
            }
        }
    }
}

編譯器是正確的。 fields是局部變量,僅在LINQ查詢中可見。 但我認為您根本不需要LINQ查詢。 只需將line.Split(',')分配給本地變量,然后使用它來創建XDocument和文件名。

就像是

foreach (string line in source)
{
    var fields = line.Split(',');

    XElement cust =
        new XElement("Root",
            new XElement("other_asset",
                new XElement("name", fields[0]),
                new XElement("status", new XElement("name", fields[1])),
                new XElement("asset_type", new XElement("name", fields[2])),
                new XElement("ip", fields[3]),
                new XElement("manufacturer", fields[4]),
                new XElement("model", fields[5]),
                new XElement("serial_number", fields[6]),
                new XElement("site", new XElement("name", fields[7])),
                new XElement("department", new XElement("name", fields[8])),
                new XElement("custom_field",
                    new XElement("location", fields[9]),
                    new XElement("Mac_Address", fields[10]),
                    new XElement("End_User", fields[11]),
                    new XElement("Notes", fields[12])
                )
            )
        );

    cust.Save(fields[0] + ".xml");
}

暫無
暫無

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

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