Я кодировал Minecraft Launcher. Я спасаю пользовательские данные в файл XML с помощью этого кода:Как получить значения элемента XDocument
public static void SaveUserDetails(string username, string clientToken,
string accessToken, string UUID, int lengthOfPass)
{
XDocument user = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XComment(String.Format("User details -- {0}", username)),
new XElement("user",
new XElement("username", username),
new XElement("clientToken", clientToken),
new XElement("accessToken", accessToken),
new XElement("userUUID", UUID),
new XElement("lengthOfPass", lengthOfPass)));
SaveXDoc(user, Path.Combine(Variables.usersFolder, username + ".user"));
}
Конечный продукт выглядит следующим образом:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!--User details - - Ilan321-->
<user>
<username>Ilan321</username>
<clientToken>clienttoken</clientToken>
<accessToken>accesstoken</accessToken>
<userUUID>uuid</userUUID>
<lengthOfPass>5</lengthOfPass>
</user>
Теперь я хочу, чтобы прочитать значения внутри элементов. Я делаю так с этим кодом:
string details = null;
XDocument doc = XDocument.Load(userFile);
var data = from item in doc.Descendants("user")
select new
{
user = item.Element("username").Value,
clientToken = item.Element("clientToken").Value,
accessToken = item.Element("accessToken").Value,
userUUID = item.Element("userUUID").Value,
passLength = item.Element("lengthOfPass").Value
};
foreach (var thing in data)
details = thing.ToString(); // there is only one string
Однако, я чувствую, как будто это очень непрофессионально (относительно Еогеасп, который перебирает через var data
). Есть ли способ быстро получить все значения в формате строки вместо использования foreach? Я попытался преобразовать data
в строку, но он просто превратил его в тип, а не в контент.
Вы ищете 'allDetails = String.Join (Environment.NewLine, data);'? –