2011-10-18 75 views
2

我期待在XML代码中进一步了解价值,而不是我见过的示例以及需要考虑的更多属性。按属性值选择具有多个级别的XML节点值

的XML代码:

<?xml version="1.0"?> 
<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <database name="Members"> 
     <table_structure name="Logins"> 
      <field Field="ID" Type="int(100)" Null="NO" Key="PRI" Extra="auto_increment" Comment="" /> 
      <field Field="Username" Type="text" Null="YES" Key="" Extra="" Comment="" /> 
      <field Field="Password" Type="text" Null="YES" Key="" Extra="" Comment="" /> 
      <key Table="Logins" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="ID" Collation="A" Cardinality="1" Null="" Index_type="BTREE" Comment="" /> 
      <options Name="Logins" Engine="MyISAM" Version="10" Row_format="Dynamic" Rows="1" Avg_row_length="20" Data_length="40" Max_data_length="281474976710655" Index_length="2048" Data_free="20" Auto_increment="3" Create_time="2011-10-14 19:30:57" Update_time="2011-10-14 19:32:21" Collation="latin1_swedish_ci" Create_options="" Comment="" /> 
     </table_structure> 
     <table_data name="Logins"> 
      <row> 
       <field name="ID">1</field> 
       <field name="Username">MyName</field> 
       <field name="Password">MyPassowrd</field> 
      </row> 
      <row> 
       <field name="ID">2</field> 
       <field name="Username">MyName2</field> 
       <field name="Password">MyPassowrd2</field> 
      </row> 
     </table_data> 
    </database> 
</mysqldump> 

我试图去1,MYNAME和密码,然后将它们输入到一个SQL数据库。

我在通过多层次越来越问题:

<database name="Members"> 
    <table_data name="Logins"> 
     <row> 
      <field name="ID"> 

随着我发现只显示1级或2级的人的例子。


这似乎是工作,

XElement xe = XElement.Load("C:\\PATH.xml"); 

int count = xe.Descendants("row").Count(); 

var items = xe.Descendants("field").Where(n => (string)n.Attribute("name") == "ID").ToList(); 

var items2 = xe.Descendants("field").Where(n => (string)n.Attribute("name") == "Username").ToList(); 

var items3 = xe.Descendants("field").Where(n => (string)n.Attribute("name") == "Password").ToList(); 

      for (int i = 0; i < count; i++) 
      { 
       string res = items[i].Value.ToString(); 
       string res2 = items2[i].Value.ToString(); 
       string res3 = items3[i].Value.ToString(); 
      } 

我有一个ID,但我现在需要在其行的所有其他元素。

也就是说,

if (id = 2) 
{ 
    string name = username.value; 
    string password = password.value; 
} 

哪里会导致myName2名和密码将被MyPassword2。

我不想把用户名和密码放在列表中。

有什么建议吗?

+1

你是什么意思“通过多个级别”?并可以使用使用LINQ to XML? (这很可能使代码更加简单。) –

+0

这个人有一个不同的问题,但最终它是XML遍历。看看他做了什么以及有关他的错误的回复:http://stackoverflow.com/q/7806604/613130(如果您想使用LINQ to XML,请使用这个函数) – xanatos

+0

不清楚你在问什么。你有什么尝试?那它不起作用呢? –

回答

0

试用LINQ to XML

这里你有a tutorial

+1

谢谢,我会离开并考虑Linq到XML。 如果我解决了它,我会发布我的发现,为将来的人寻找同样的问题。 – BenG

相关问题