Я пытаюсь научиться использовать xml-файлы в своем приложении. Я хочу сделать простое чтение элемента и, возможно, переписать элемент и получить его значение. У меня есть файл XML, который выглядит примерно так:читать и писать простой элемент в xml
<?xml version="1.0" encoding="utf-16"?>
<PTH>
<Account>
<Username>aa</Username>
<Password>xx</Password>
<Email>[email protected]</Email>
<Role>Student</Role>
</Account>
<ChartName>
<Id>1</Id>
<Name>John Smith</Name>
<PlaceOfBirth>louisville, ky</PlaceOfBirth>
<BirthDate>1/1/70</BirthDate>
<TimeZone>Greenwich</TimeZone>
</ChartName>
<ChartName>
<Id>2</Id>
<Name>John Smith</Name>
<PlaceOfBirth>New York, NY</PlaceOfBirth>
<BirthDate>1/1/1980</BirthDate>
<TimeZone>Greenwich</TimeZone>
</ChartName>
<ChartName>
<Id>3</Id>
<Name>Jane Doe</Name>
<PlaceOfBirth>Los Angeles, Ca</PlaceOfBirth>
<BirthDate>1/1/1990</BirthDate>
<TimeZone>Greenwich</TimeZone>
</ChartName>
</PTH>
где будет только один элемент учетной записи и несколько элементов ChartName. Код, который я придумал это:
public class Account
{
public string Username { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public string Role { get; set; }
}
...
XDocument xml = XDocument.Load(HttpContext.Current.Server.MapPath("~") + "\\App_Data\\" + username.Text.Trim());
XElement xEle = xml.Element("PTH");
var Accounts = (from Account in xml.Root.Elements("Account")
select new
{
Email = (string)Account.Element("Email").Value,
Role = (string)Account.Element("Role").Value
});
foreach (var Account in Accounts)
{
Session["Email"] = Account.Email;
Session["Role"] = Account.Role;
}
код работает, но, кажется, на самом деле, действительно извилистый путь только для чтения значения элемента. Кроме того, я не совсем уверен, как могу, скажем, переписать только значение элемента электронной почты. У кого-нибудь есть простой способ прочитать и/или переписать значение элемента? Похоже, он должен быть очень простым, но он ускользает от меня ...
если есть только 1 узел 'Account', почему' foreach' и Linq? Я думаю, вы можете использовать XPath и просто выбирать отдельные узлы для получения своих значений (InnerText). [Ссылка] (https://msdn.microsoft.com/en-us/library/h0hw012b (v = vs.110) .aspx) – zgood
Да, «foreach» кажется излишним, но это то, что я нашел в уроки, которые я читал. Большинство учебников показывают простые XML-файлы только с одним типом основных элементов, таких как «книга», а не с файлами с несколькими типами элементов. – SteveFerg
У вас есть контроль над XML-форматом? Если элементы были обернуты родителем , это было бы сериализуемо. –
Derpy