Я довольно новичок в XML и разбираю его с помощью C #. Я пытаюсь разобрать документ XML, который выглядит следующим образом:
<Msg Version="1.0">
<ProgList>
<update sequence="41248" amount="3327" Lvl="1" Grp="1" />
<update sequence="41216" amount="5326" Lvl="2" Grp="1" />
<update sequence="41252" amount="7326" Lvl="3" Grp="1" />
</ProgList>
</Msg>
Я пытаюсь использовать XDocument и не могу разобрать три обновления с атрибутами.
Однако, если я создаю XML-документ, содержащий те же данные в этой форме:
<Msg Version="1.0">
<ProgList>
<Level>
<seq>41248</seq>
<amount>3327</amount>
<Lvl>1</Lvl>
<Grp>1</Grp>
</Level>
<Level>
<seq>41216</seq>
<amount>5326</amount>
<Lvl>2</Lvl>
<Grp>1</Grp>
</Level>
<Level>
<seq>41252</seq>
<amount>7326</amount>
<Lvl>3</Lvl>
<Grp>1</Grp>
</Level>
</ProgList>
</Msg>
Я могу анализировать и перебирать данные уровня, используя следующий код:
String xmlText = String.Empty;
//String xml = String.Empty;
int begin = Data.IndexOf("<?xml");
int end = Data.IndexOf("</Msg") + 6;
try
{
//xml = Data.Substring(begin, end - begin);
}
catch { };
String xml =
@"<Msg Version='1.0'>
<ProgList>
<Level>
<seq>41248</seq>
<amount>3327</amount>
<Lvl>1</Lvl>
<Grp>1</Grp>
</Level>
<Level>
<seq>41216</seq>
<amount>5326</amount>
<Lvl>2</Lvl>
<Grp>1</Grp>
</Level>
<Level>
<seq>41252</seq>
<amount>7326</amount>
<Lvl>3</Lvl>
<Grp>1</Grp>
</Level>
</ProgList>
</Msg>";
try
{
XDocument xmlDoc = XDocument.Parse(xml);
var updates = from x in xmlDoc.Descendants("Level")
select new
{
seq = x.Descendants("seq").First().Value,
amt = x.Descendants( "amount" ).First().Value,
lvl = x.Descendants("Lvl").First().Value,
grp = x.Descendants("Grp").First().Value
};
foreach (var x in updates)
{
String output = String.Format("{0}SEQ: {1} AMT: {2} LVL: {3} GRP: {4}",
Environment.NewLine, x.seq, x.amt, x.lvl, x.grp);
}
Как бы я проанализировал первый стиль документа XML?