我想在c#中加載一個config.xml文件,將它分成4個不同的列表。 XML文件看起來是這樣的:c#-linq to xml:讀取一個xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<Configs version="1.0" author="AP">
<config ver="9.7">
<start>00090[ABCDEF].*</start>
<lines>544</lines>
<configFile>cfg_9_7.xml</configFile>
</config>
<config ver="9.7_512">
<start>00090[1-9].*</start>
<lines>512</lines>
<configFile>cfg_9_7_v2_512.xml</configFile>
</config>
<config ver="9.7">
<start>00090[2-7].*</start>
<lines>256</lines>
<configFile>cfg_9_7_small.xml</configFile>
</config>
</Configs>
我需要拆分一個配置(config ver="..."
),一開始,線條和configFile
的版本。所有的列表可以保存字符串,所以我只需要值和屬性。我想是因爲我認爲這是一個很多比更快更小我「讀取所有行,並搜索關鍵字」功能與LINQ到使這個XML:
var cfg = File.ReadAllLines(folder + keyCfg);
List<String> config = new List<String>(cfg);
Boolean keyFormatConfig = false;
for (int i = 0; i < config.Count; i++)
{
String line = config[i];
while (line.StartsWith(" ") || line.StartsWith("\t"))
{
line = line.Substring(1);
}
if (line.StartsWith("<config ver=\""))
{
keyFormatConfig = true;
}
if (line.StartsWith("</config>"))
{
keyFormatConfig = false;
}
if (keyFormatConfig)
{
if (line.StartsWith("<config ver=\""))
{
String[] name = line.Split('"');
if (name.Length >= 2)
{
Version.Add(name[1]);
}
}
else if (line.StartsWith("<start>"))
{
line = line.Substring(7);
if (line.Contains("<"))
{
String[] value = line.Split('<');
Start.Add(value[0]);
}
}
else if (line.StartsWith("<lines>"))
{
line = line.Substring(7);
if (line.Contains("<"))
{
String[] value = line.Split('<');
Lines.Add(value[0]);
}
}
else if (line.StartsWith("<configFile>"))
{
line = line.Substring(12);
if (line.Contains("<"))
{
String[] value = line.Split('<');
ConfigFile.Add(value[0]);
}
}
}
}
對不起,我的英語不好:)
您已經添加了'LINQ到xml'標籤,但你沒有使用!你想要使用linq-to-xml的相應代碼嗎? –
@ArghyaC是的,我想使用LINQ到XML – AnimatedPictures
理想情況下,你應該嘗試一下,然後尋求幫助,如果你卡住了。但你已經得到了答案:) –