2011-10-18 21 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> 

私は、SQLデータベースにそれらを入力するには、1、MYNAMEとパスワードを取得しようとしています。

私がいる問題は、複数のレベルを介して取得している:

<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を持っているが、私は今、その行のすべての他の要素を必要とします。 、

名前はmyName2とパスワードMyPassword2になりますになります
if (id = 2) 
{ 
    string name = username.value; 
    string password = password.value; 
} 

ある

ユーザー名とパスワードをリストに入れたくありません。

もう一度アドバイスをお願いします。

+1

「複数のレベルを超えている」とはどういう意味ですか? LINQ to XMLを使用できますか? –

+0

この人には別の問題がありましたが、結局XMLトラバーサルでした。彼が何をしたのか、彼のエラーに関する返答を見てください:http://stackoverflow.com/q/7806604/613130(これはLINQ to XMLを使いたい場合) – xanatos

+0

あなたが何を求めているのかは明らかではありません。何を試しましたか?それはどうしたらうまくいかないのですか? –

答えて

0

LINQ to XMLとお試しください。

ここにはa tutorialがあります。

+1

ありがとう、私は離れて、XMLにLinqを調べます。 私はそれを解決すれば、私は同じ問題を探している将来の人々のために私の発見を投稿します。 – BenG

関連する問題