私のアプリケーションでxmlファイルを使用する方法を学びたいと思っています。私は要素の単純な読み込みを行い、オプションで要素を書き換えてその値を取得したい。一つだけのアカウント要素と複数のChartName要素があるでしょう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>
:私はのようになりますxmlファイルを持っています。
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つだけの場合、なぜ「foreach」とLinq?私はXPathを使用して単一のノードを選択して値(InnerText)を得ることができると思います。 [参考](https://msdn.microsoft.com/en-us/library/h0hw012b(v = vs.110).aspx) – zgood
ええ、「foreach」は過剰殺人のようですが、それは私が私が読んでいたチュートリアル。ほとんどのチュートリアルでは、単純なxmlファイルが表示されます。たとえば、「book」のような主要な要素の1つのタイプのみで、複数の要素タイプを持つファイルはありません。 – SteveFerg
あなたはXML形式を制御できますか?の要素が親のにラップされている場合は、シリアル化可能です。 –
Derpy