按多个级别的属性值选择XML节点值
本文关键字:选择 XML 节点 属性 | 更新日期: 2023-09-27 18:11:39
我希望在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和Password,然后将它们输入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;
}
其中name的结果是myName2, password的结果是MyPassword2。
我不想把用户名和密码放在一个列表中。
还有什么建议吗?
尝试使用LINQ to XML。