在Phone7中解析XML

时间:2012-10-18 06:06:07

标签: windows-phone-7 xml-parsing windows-phone-7.1

如何解析以下XML中仅Main_Screen节点的元素。

<?xml version="1.0" encoding="utf-8" ?>

<plist version="1.0">
<Main_Screen>
        <row>
            <btn_name>Buyer Programs</btn_name>

        </row>
        <row>
            <btn_name>Seller�s Programs</btn_name>

        </row>
<Main_Screen>
<Buyer>
       <row>
           <btn_name>buy_bac</btn_name>

       </row>
       <row>
           <btn_name>buy_hme</btn_name>

     </row>
<Buyer>
<Seller>
   <row>
       <btn_name>buy_bac</btn_name>

   </row>
   <row>
       <btn_name>buy_hme</btn_name>

 </row>
<seller>
<Lender>
   <row>
       <btn_name>buy_bac</btn_name>

   </row>
   <row>
       <btn_name>buy_hme</btn_name>

 </row>
<lender>
<abcd>
   <row>
       <btn_name>buy_bac</btn_name>

   </row>
   <row>
       <btn_name>buy_hme</btn_name>

 </row>
<abcd>

</plist>

我尝试了以下代码,但所有元素都被解析了,我只想解析main_screen节点下面的元素,

 XDocument loadedData = XDocument.Load("HelpScreenData.xml");

        var data = (from query in loadedData.Descendants("row")

                    select new tutstat
                    {
                        btn_name = (string)query.Element("btn_name"),
                        strng = (string)query.Element("strng"),
                    }).ToList();

请指导我,谢谢你!

1 个答案:

答案 0 :(得分:0)

听起来就像在调用Root.Element("Main_Screen")之前使用Descendants一样简单:

XDocument loadedData = XDocument.Load("HelpScreenData.xml");

var data = loadedData.Root
                     .Element("Main_Screen")
                     .Descendants("row") // Or .Elements("row")
                     .Select(x => new tutstat 
                             {
                                btn_name = (string) x.Element("btn_name"),
                                strng = (string) x.Element("strng"),
                             })
                     .ToList();

我已经将它从查询表达式更改为简单的方法调用堆栈,因为查询表达式只是添加了噪声。

您还应修复所有名称以符合.NET约定并更具说明性。