Имею такой xml файл
<root>
<mainsettings>
<version>v.0.1.0</version>
<Window>
<H>100</H>
<L>200</L>
</Window>
</mainsettings>
.....
</root>
Как правильно загрузить значения в переменные? В данный момент делаю это вот так
var settings = xDoc.Descendants("MainSettings");
Win.Height = Convert.ToInt32(settings .Descendants("Window").Descendants("Width").First().Value);
Win.Length = Convert.ToInt32(settings .Descendants("Window").Descendants("Length").First().Value);
Может есть какой-то правильный способ?
Если вам нужно просто считать значения без получения объектной структуры всего файла, возможно, подойдёт простое
var doc = XDocument.Load(path);
var win = doc.Root.Element("mainsettings").Element("Window");
var h = (int)win.Element("H");
var w = (int)win.Element("L");
Вы можете воспользоваться объектом XmlSerializer для десериализации xml
Вот код для вашего случая
class Window {public int H; public int L;}
class MainSettings {public string version; public Window Window; }
class Root {public MainSettings mainsettings;}
MainSettings DeserializeSetting(string fullFilename)
{
var serializer = new XmlSerializer(typeof(Root), new XmlRootAttribute("root"));
using (var fs = new FileStream(fullFilename, FileMode.Open))
{
var reader = XmlReader.Create(fs);
var root = (Root)serializer.Deserialize(reader);
return root.mainsettings;
}
}
Есть еще вот такой способ:
public class Window
{
public int H {get;set;}
public int W {get;set;}
}
List<Window> wins = new List<Window>();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filepath);
XmlNodeList elemList = xmlDoc.GetElementsByTagName("Window");
foreach (XmlNode node in elemList)
{
wins.Add(new Window
{
W = Convert.ToInt32(node.SelectSingleNode("L").InnerText),
H = Convert.ToInt32(node.SelectSingleNode("H").InnerText)
});
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я начинал изучатьFramework MonoGame/XNA языка C#,уже понимаю устройство программы,но не могу понять зачем нужен метод Initialize()
За комментировал строки которые не могу понять, помогите разобратьсяСпасибо
Столкнулся с интересным и не совсем понятным поведением компилятора