C#/XML 读取 XML 文件不起作用
本文关键字:XML 不起作用 文件 读取 | 更新日期: 2023-09-27 18:37:18
我想读取一个XML文件并保存InnerText-Strings,但它崩溃并出现SystemNullReference错误。我认为我阅读它的方式是错误的,但我不确定。
XML-文件:
<?xml version="1.0" encoding="Windows-1252" standalone="no"?>
<schema>
<Hintergrund>#FFFFFFFF</Hintergrund>
<Zahlen>#FFFFFFFF</Zahlen>
<Text>#FFFFFFFF</Text>
<Zeichenketten>#FFFFFFFF</Zeichenketten>
<Tags>#FF000000</Tags>
<Direktiven>#FF000000</Direktiven>
<Ausdruecke>#FF000000</Ausdruecke>
<Initialisierer>#FF000000</Initialisierer>
<Modifizierer>#FF000000</Modifizierer>
<Booleanische>#FF000000</Booleanische>
<Operator>#FF000000</Operator>
<Kommentare>#FF000000</Kommentare>
</schema>
读数:
foreach (XmlNode node in doc.SelectNodes("/schema/*"))
{
switch (node.Name)
{
case "Hintergrund":
colorBG = (Color)ColorConverter.ConvertFromString(node["Hintergrund"].InnerText);
break;
case "Zahlen":
colorNumbers = (Color)ColorConverter.ConvertFromString(node["Zahlen"].InnerText);
break;
case "Text":
colorText = (Color)ColorConverter.ConvertFromString(node["Text"].InnerText);
break;
case "Zeichenketten":
colorStrings = (Color)ColorConverter.ConvertFromString(node["Zeichenketten"].InnerText);
break;
case "Tags":
colorTags = (Color)ColorConverter.ConvertFromString(node["Tags"].InnerText);
break;
case "Direktiven":
colorDirectives = (Color)ColorConverter.ConvertFromString(node["Direktiven"].InnerText);
break;
case "Ausdruecke":
colorStatements = (Color)ColorConverter.ConvertFromString(node["Ausdruecke"].InnerText);
break;
case "Initialisierer":
colorInitial = (Color)ColorConverter.ConvertFromString(node["Initialisierer"].InnerText);
break;
case "Modifizierer":
colorModifiers = (Color)ColorConverter.ConvertFromString(node["Modifizierer"].InnerText);
break;
case "Booleanische":
colorBools = (Color)ColorConverter.ConvertFromString(node["Booleanische"].InnerText);
break;
case "Operator":
colorOperators = (Color)ColorConverter.ConvertFromString(node["Operator"].InnerText);
break;
case "Kommentare":
colorComments = (Color)ColorConverter.ConvertFromString(node["Kommentare"].InnerText);
break;
}
}
请告诉我为什么它不起作用。
您当前正在尝试获取Text
元素等中的Text
节点 - 但没有。
我怀疑你想要这样的东西:
case "Text":
colorText = (Color) ColorConverter.ConvertFromString(node.InnerText);
或者,我只需选择schema
节点本身,然后使用:
colorText = ConvertColor(node["Text"]);
colorBG = ConvertColor(node["Hintergrund"]);
// etc
其中ConvertColor
是这样的:
Color ConvertColor(XmlNode node)
{
return node == null ? null
: (Color) ColorConverter.ConvertFromString(node.InnerText);
}
你需要写节点。InnerXml 或 node。用于读取每个元素的内部文本