首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字段元素字典查找

字段元素字典查找
EN

Stack Overflow用户
提问于 2015-10-26 17:16:05
回答 1查看 49关注 0票数 0

提前为一个愚蠢的问题道歉。我三天前就从C#开始了。我有一个自动化文档创建的要求。这些文档是从配置输出创建的,我将这些配置输出转换为xml,然后转换为word。到目前为止,我已经成功地结合了XMLwriter和FieldParser的魔力,如下所示。

现在,我想添加一些查找。例如,int _librarytype;下面将返回一个数字,例如"8“,我想打印相关的值"TLD”。我读过关于字典的文章,但是我不知道如何或在哪里将它们应用于数组成员。

如有任何指导,将不胜感激。

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualBasic.FileIO;
using System.IO;
using System.Xml;

class Program
{
    class StorageUnit
    {
        string _storagename;
        int _storageunittype;
        string _hostConnection;
        int _librarytype;
        int _robotnumber;
        int _density;
        int _maxconjobsnumberdrives;
        int _multiplexing;
        int _fragsize;
        string _diskpool;

        public StorageUnit(string storageunitname, int storageunittype, string hostconnection, int librarytype, int robotnumber, int density, int maxconjobsnumberdrives, int multiplexing, int fragsize, string diskpool)
        {
            _storagename = storageunitname;
            _storageunittype = storageunittype;
            _hostConnection = hostconnection;
            _librarytype = librarytype;
            _robotnumber = robotnumber;
            _density = density;
            _maxconjobsnumberdrives = maxconjobsnumberdrives;
            _multiplexing = multiplexing;
            _fragsize = fragsize;
            _diskpool = diskpool;
        }

        public string storageunitname { get { return _storagename; } }
        public int storageunittype { get { return _storageunittype; } }
        public string hostconnection { get { return _hostConnection; } }
        public int librarytype { get { return _librarytype; } }
        public int robotNumber { get { return _robotnumber; } }
        public int density { get { return _density; } }
        public int maxconjobsnumberdrives { get { return _maxconjobsnumberdrives; } }
        public int multiplexing { get { return _multiplexing; } }
        public int fragsize { get { return _fragsize; } }
        public string diskpool { get { return _diskpool; } }
    }

    static void Main()
    {
        XmlWriterSettings settings = new XmlWriterSettings();
        settings.Indent = true;
        settings.IndentChars = "\t";
        using (TextFieldParser storageunits = new TextFieldParser("C:\\Input Files\\bpstulist.txt"))
        using (XmlWriter writer = XmlWriter.Create("C:\\Output Files\\StorageUnits.xml",settings))
        {
            storageunits.TextFieldType = FieldType.Delimited;
            storageunits.Delimiters = new string[] { " " };
            storageunits.HasFieldsEnclosedInQuotes = true;
            storageunits.TrimWhiteSpace = true;


            string[] stuprops;
            int stunumber = 0;
            writer.WriteStartDocument();
            writer.WriteStartElement("StorageUnits");
            while (!storageunits.EndOfData)
            {
                stuprops = storageunits.ReadFields();
                writer.WriteStartElement("StorageUnit");
                writer.WriteElementString("StorageUnitName", stuprops[0]);
                writer.WriteElementString("StorageUnitType", stuprops[1].ToString());
                writer.WriteElementString("HostConnection", stuprops[2]);
                writer.WriteElementString("LibraryType", stuprops[3].ToString());
                writer.WriteElementString("RobotNumber", stuprops[4].ToString());
                writer.WriteElementString("Density", stuprops[5].ToString());
                writer.WriteElementString("MaxConcurrentDrives", stuprops[6].ToString());
                writer.WriteElementString("Multiplexing", stuprops[10].ToString());
                writer.WriteElementString("FragmentSize", stuprops[11].ToString());
                writer.WriteElementString("Diskpool", stuprops[19]);
                writer.WriteEndElement();
                stunumber++;
                     writer.WriteEndElement();
            writer.WriteEndDocument();
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-03 05:19:54

我想通了。我加了

代码语言:javascript
复制
Dictionary<int, string> lib_lookup = new Dictionary<int, string>()
                                                            {
                                                                {0, "NONE"},
                                                                {1, "ACS"},
                                                                {2, "TS8"},
                                                                {5, "ODL"},
                                                                {6, "TL8"},
                                                                {7, "TL4"},
                                                                {8, "TLD"},
                                                                {10, "TSD"},
                                                                {11, "TSH"},
                                                                {12, "TLH"},
                                                                {13, "TLM"},
                                                                {17, "LMF"},
                                                             }; 

然后,我稍后引用它,以获得正确的值。

代码语言:javascript
复制
                        int librarynumber;
                    bool libparsed = Int32.TryParse((stuprops[3]), out librarynumber);
                    string libtypestring = lib_lookup[(librarynumber)];
                    writer.WriteElementString("LibraryType", libtypestring);

从int到string的字符串看起来有点复杂,但我仍然在学习。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33351694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档