我又来提问了!XML节点取值问题。

huayy 2011-10-19 11:16:24
Dim nodelist As XmlNodeList = xmldoc.SelectNodes("//trades_sold_get_response/trades/trade")
For Each nl As XmlNode In nodelist
'通过这里可以获得到值,比如:
dim s = nl.Item("sid").InnerText
Dim nodelist_car As XmlNodeList = xmldoc.SelectNodes("//trades_sold_get_response/trades/trade/orders/order")
For Each nl_car As XmlNode In nodelist_car
'想在这里获得s的值,现在s的值永远是第一个,应该是我写法不对,接触XML不久。
response.write(s)
next
next

如果运行上面那个for,将s写入数据库是不同的值,但是在第二个for里取s值永远都是第一个。取值代码
...全文
236 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
huayy 2011-10-19
  • 打赏
  • 举报
回复
XML其实是我修改过的,原来的XML我没有权限修改,导出的数据有很多隐私信息不能发到CSDN来。
现在主要是对xml 的 for 取值不太了解。
qxyywy 2011-10-19
  • 打赏
  • 举报
回复
建议XML再加一个节点
<buyer_nicks>
<buyer_nick>A</buyer_nick>
<orders list="true">
<order>1</order>
</orders>
</buyer_nicks>
这样你就可以清晰的读取了 <buyer_nicks>
再进行你的代码

先找到<trade>节点下的
huayy 2011-10-19
  • 打赏
  • 举报
回复

<?xml version="1.0" encoding="utf-8" ?>
<trade>
<buyer_nick>A</buyer_nick>
<orders list="true">
<order>1</order>
</orders>

<buyer_nick>B</buyer_nick>
<orders list="true">
<order>2</order>
<order>3</order>
<order>4</order>
<order>5</order>
</orders>
</trade>



我想把A和B分别存入ms 数据库表table1,
把<order>中的1存入数据库表table2,同时在table2的某列中记录为A
2~5存入数据表table2,同时在table2的某列中记录为B
qxyywy 2011-10-19
  • 打赏
  • 举报
回复
这是ASP哈, 不是很懂ASP 这个是你的XML节点问题,前面的节点是父节点 他下面有多个orders 循环能找到你对应的多个“sid”
而之后的节点下应该只有一个SID的节点
具体的把你的这部分的XML放出来再说
huayy 2011-10-19
  • 打赏
  • 举报
回复
这个帖子麻烦不要回复了,谢谢。
待会一起结贴!
第三帖,也是最终帖!
http://topic.csdn.net/u/20111019/15/ce2cb887-9abe-4a78-a68c-70d419ed65e4.html
真相重于对错 2011-10-19
  • 打赏
  • 举报
回复
你的xpath错了
huayy 2011-10-19
  • 打赏
  • 举报
回复
我使用的XML文件

<?xml version="1.0" encoding="utf-8" ?><trades_sold_get_response><trades list="true"><trade><adjust_fee>内容</adjust_fee><buyer_nick>内容</buyer_nick><buyer_obtain_point_fee>内容</buyer_obtain_point_fee><buyer_rate>内容</buyer_rate><cod_fee>内容</cod_fee><cod_status>内容</cod_status><created>内容</created><discount_fee>内容</discount_fee><modified>内容</modified><orders list="true"><order><adjust_fee>内容</adjust_fee><buyer_rate>内容</buyer_rate><discount_fee>内容</discount_fee><num>内容</num><num_iid>内容</num_iid><oid>内容</oid><outer_iid>内容</outer_iid><outer_sku_id>内容</outer_sku_id><payment>内容</payment><pic_path>内容</pic_path><price>内容</price><refund_status>内容</refund_status><seller_rate>内容</seller_rate><seller_type>内容</seller_type><sku_id>内容</sku_id><sku_properties_name>内容</sku_properties_name><status>内容</status><title>内容</title><total_fee>内容</total_fee></order><order><adjust_fee>内容</adjust_fee><buyer_rate>内容</buyer_rate><discount_fee>内容</discount_fee><num>内容</num><num_iid>内容</num_iid><oid>内容</oid><outer_iid>内容</outer_iid><outer_sku_id>内容</outer_sku_id><payment>内容</payment><pic_path>内容</pic_path><price>内容</price><refund_status>内容</refund_status><seller_rate>内容</seller_rate><seller_type>内容</seller_type><sku_id>内容</sku_id><sku_properties_name>内容</sku_properties_name><status>内容</status><title>内容</title><total_fee>内容</total_fee></order><order><adjust_fee>内容</adjust_fee><buyer_rate>内容</buyer_rate><discount_fee>内容</discount_fee><num>内容</num><num_iid>内容</num_iid><oid>内容</oid><outer_iid>内容</outer_iid><outer_sku_id>内容</outer_sku_id><payment>内容</payment><pic_path>内容</pic_path><price>内容</price><refund_status>内容</refund_status><seller_rate>内容</seller_rate><seller_type>内容</seller_type><sku_id>内容</sku_id><sku_properties_name>内容</sku_properties_name><status>内容</status><title>内容</title><total_fee>内容</total_fee></order><order><adjust_fee>内容</adjust_fee><buyer_rate>内容</buyer_rate><discount_fee>内容</discount_fee><num>内容</num><num_iid>内容</num_iid><oid>内容</oid><outer_iid>内容</outer_iid><outer_sku_id>内容</outer_sku_id><payment>内容</payment><pic_path>内容</pic_path><price>内容</price><refund_status>内容</refund_status><seller_rate>内容</seller_rate><seller_type>内容</seller_type><sku_id>内容</sku_id><sku_properties_name>内容</sku_properties_name><status>内容</status><title>内容</title><total_fee>内容</total_fee></order><order><adjust_fee>内容</adjust_fee><buyer_rate>内容</buyer_rate><discount_fee>内容</discount_fee><num>内容</num><num_iid>内容</num_iid><oid>内容</oid><outer_iid>内容</outer_iid><outer_sku_id>内容</outer_sku_id><payment>内容</payment><pic_path>内容</pic_path><price>内容</price><refund_status>内容</refund_status><seller_rate>内容</seller_rate><seller_type>内容</seller_type><sku_id>内容</sku_id><sku_properties_name>内容</sku_properties_name><status>内容</status><title>内容</title><total_fee>内容</total_fee></order><order><adjust_fee>内容</adjust_fee><buyer_rate>内容</buyer_rate><discount_fee>内容</discount_fee><num>内容</num><num_iid>内容</num_iid><oid>内容</oid><outer_iid>内容</outer_iid><outer_sku_id>内容</outer_sku_id><payment>内容</payment><pic_path>内容</pic_path><price>内容</price><refund_status>内容</refund_status><seller_rate>内容</seller_rate><seller_type>内容</seller_type><sku_id>内容</sku_id><sku_properties_name>内容</sku_properties_name><status>内容</status><title>内容</title><total_fee>内容</total_fee></order></orders><payment>内容</payment><point_fee>内容</point_fee><post_fee>内容</post_fee><real_point_fee>内容</real_point_fee><received_payment>内容</received_payment><receiver_address>内容</receiver_address><receiver_city>内容</receiver_city><receiver_district>内容</receiver_district><receiver_mobile>内容</receiver_mobile><receiver_name>内容</receiver_name><receiver_phone></receiver_phone><receiver_state>内容</receiver_state><receiver_zip>内容</receiver_zip><seller_nick>内容</seller_nick><seller_rate>内容</seller_rate><shipping_type>内容</shipping_type><sid>内容</sid><status>内容</status><tid>内容</tid><title>内容</title><total_fee>内容</total_fee><type>内容</type></trade><trade><adjust_fee>内容</adjust_fee><buyer_nick>内容</buyer_nick><buyer_obtain_point_fee>内容</buyer_obtain_point_fee><buyer_rate>内容</buyer_rate><cod_fee>内容</cod_fee><cod_status>内容</cod_status><created>内容</created><discount_fee>内容</discount_fee><modified>内容</modified><num>内容</num><num_iid>内容</num_iid><orders list="true"><order><adjust_fee>内容</adjust_fee><buyer_rate>内容</buyer_rate><discount_fee>内容</discount_fee><num>内容</num><num_iid>内容</num_iid><oid>内容</oid><outer_iid>内容</outer_iid><outer_sku_id>内容</outer_sku_id><payment>内容</payment><pic_path>内容</pic_path><price>内容</price><refund_status>内容</refund_status><seller_rate>内容</seller_rate><seller_type>内容</seller_type><sku_id>内容</sku_id><sku_properties_name>内容</sku_properties_name><status>内容</status><title>内容</title><total_fee>内容</total_fee></order></orders><payment>内容</payment><pic_path>内容</pic_path><point_fee>内容</point_fee><post_fee>内容</post_fee><price>内容</price><real_point_fee>内容</real_point_fee><received_payment>内容</received_payment><receiver_address>内容</receiver_address><receiver_city>内容</receiver_city><receiver_district>内容</receiver_district><receiver_mobile>内容</receiver_mobile><receiver_name>内容</receiver_name><receiver_phone></receiver_phone><receiver_state>内容</receiver_state><receiver_zip>内容</receiver_zip><seller_nick>内容</seller_nick><seller_rate>内容</seller_rate><shipping_type>内容</shipping_type><sid>内容</sid><status>内容</status><tid>内容</tid><title>内容</title><total_fee>内容</total_fee><type>内容</type></trade><trade><adjust_fee>内容</adjust_fee><buyer_nick>内容</buyer_nick><buyer_obtain_point_fee>内容</buyer_obtain_point_fee><buyer_rate>内容</buyer_rate><cod_fee>内容</cod_fee><cod_status>内容</cod_status><created>内容</created><discount_fee>内容</discount_fee><modified>内容</modified><orders list="true"><order><adjust_fee>内容</adjust_fee><buyer_rate>内容</buyer_rate><discount_fee>内容</discount_fee><num>内容</num><num_iid>内容</num_iid><oid>内容</oid><outer_iid>内容</outer_iid><payment>内容</payment><pic_path>内容</pic_path><price>内容</price><refund_status>内容</refund_status><seller_rate>内容</seller_rate><seller_type>内容</seller_type><sku_id>内容</sku_id><sku_properties_name>内容</sku_properties_name><status>内容</status><title>内容</title><total_fee>内容</total_fee></order><order><adjust_fee>内容</adjust_fee><buyer_rate>内容</buyer_rate><discount_fee>内容</discount_fee><num>内容</num><num_iid>内容</num_iid><oid>内容</oid><outer_iid>内容</outer_iid><payment>内容</payment><pic_path>内容</pic_path><price>内容</price><refund_status>内容</refund_status><seller_rate>内容</seller_rate><seller_type>内容</seller_type><sku_id>内容</sku_id><sku_properties_name>内容</sku_properties_name><status>内容</status><title>内容</title><total_fee>内容</total_fee></order><order><adjust_fee>内容</adjust_fee><buyer_rate>内容</buyer_rate><discount_fee>内容</discount_fee><num>内容</num><num_iid>内容</num_iid><oid>内容</oid><outer_iid>内容</outer_iid><payment>内容</payment><pic_path>内容</pic_path><price>内容</price><refund_status>内容</refund_status><seller_rate>内容</seller_rate><seller_type>内容</seller_type><sku_id>内容</sku_id><sku_properties_name>内容</sku_properties_name><status>内容</status><title>内容</title><total_fee>内容</total_fee></order></orders><payment>内容</payment><point_fee>内容</point_fee><post_fee>内容</post_fee><real_point_fee>内容</real_point_fee><received_payment>内容</received_payment><receiver_address>内容</receiver_address><receiver_city>内容</receiver_city><receiver_district>内容</receiver_district><receiver_mobile>内容</receiver_mobile><receiver_name>内容</receiver_name><receiver_phone></receiver_phone><receiver_state>内容</receiver_state><receiver_zip>内容</receiver_zip><seller_nick>内容</seller_nick><seller_rate>内容</seller_rate><shipping_type>内容</shipping_type><sid>内容</sid><status>内容</status><tid>内容</tid><title>内容</title><total_fee>内容</total_fee><type>内容</type></trade><trade><adjust_fee>内容</adjust_fee><buyer_nick>内容</buyer_nick><buyer_obtain_point_fee>内容</buyer_obtain_point_fee><buyer_rate>内容</buyer_rate><cod_fee>内容</cod_fee><cod_status>内容</cod_status><created>内容</created><discount_fee>内容</discount_fee><modified>内容</modified><num>内容</num><num_iid>内容</num_iid><orders list="true"><order><adjust_fee>内容</adjust_fee><buyer_rate>内容</buyer_rate><discount_fee>内容</discount_fee><num>内容</num><num_iid>内容</num_iid><oid>内容</oid><outer_iid>内容</outer_iid><payment>内容</payment><pic_path>内容</pic_path><price>内容</price><refund_status>内容</refund_status><seller_rate>内容</seller_rate><seller_type>内容</seller_type><sku_id>内容</sku_id><sku_properties_name>内容</sku_properties_name><status>内容</status><title>内容</title><total_fee>内容</total_fee></order></orders><payment>内容</payment><pic_path>内容</pic_path><point_fee>内容</point_fee><post_fee>内容</post_fee><price>内容</price><real_point_fee>内容</real_point_fee><received_payment>内容</received_payment><receiver_address>内容</receiver_address><receiver_city>内容</receiver_city><receiver_district>内容</receiver_district><receiver_mobile>内容</receiver_mobile><receiver_name>内容</receiver_name><receiver_phone></receiver_phone><receiver_state>内容</receiver_state><receiver_zip>内容</receiver_zip><seller_nick>内容</seller_nick><seller_rate>内容</seller_rate><shipping_type>内容</shipping_type><sid>内容</sid><status>内容</status><tid>内容</tid><title>内容</title><total_fee>内容</total_fee><type>内容</type></trade></trades><total_results>内容</total_results></trades_sold_get_response><!--top016071.cm4-->






Dim xmldoc As New XmlDocument()
xmldoc.Load(Server.MapPath("XML/1.xml"))
Dim nodelist As XmlNodeList = xmldoc.SelectNodes("//trades_sold_get_response/trades/trade") '指向XML所在节点

For Each nl As XmlNode In nodelist


Dim tid = nl.Item("tid").InnerText '目前取tid的值是正常的


Dim nodelist_car As XmlNodeList = xmldoc.SelectNodes("//trades_sold_get_response/trades/trade/orders/order") '指向购物车内容所在节点
For Each nl_car As XmlNode In nodelist_car

Dim oid = nl_car.Item("oid").InnerText '取oid的值也是正常的

'我想在这个循环里取到tid的值,我估计是我的写法不对,可能对for each的理解就有问题。求代码!

Next

Next




qxyywy 2011-10-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 qxyywy 的回复:]

建议用序列化和反序列化
<ArrayOfMergeRemindItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<RemindItem>
<Type>Month</Type>
<FirstRemind>5<……
[/Quote]

XmlSerializeUtils对象中的Load 和Save方法 已经放出来了
qxyywy 2011-10-19
  • 打赏
  • 举报
回复
建议用序列化和反序列化
<ArrayOfMergeRemindItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<RemindItem>
<Type>Month</Type>
<FirstRemind>5</FirstRemind>
<SecondRemind>8</SecondRemind>
<ThirdRemind>12</ThirdRemind>
</RemindItem>
<RemindItem>
<Type>Quarter</Type>
<FirstRemind>10</FirstRemind>
<SecondRemind>12</SecondRemind>
<ThirdRemind>18</ThirdRemind>
</RemindItem>
<RemindItem>
<Type>HalfYear</Type>
<FirstRemind>15</FirstRemind>
<SecondRemind>20</SecondRemind>
<ThirdRemind>25</ThirdRemind>
</RemindItem>
</ArrayOfMergeRemindItem>




/// <summary>
/// 名 称:<br>
/// </summary>
/// <remarks>
/// 版 本:1.0<br>
/// 作 者:张泽军<br>
/// 创始时间:2011-10-8 10:41:58<br>
/// 描 述:
/// ----------修改记录------------<br>
/// </remarks>
public static class ReceivablesRemindConfig
{
private static readonly Object lockHelper = new Object();
private static string fullConfigPath = "";
private static readonly FileSystemWatcher watcher = null;
private static List<RemindItem> remindItemList = new List<RemindItem>();

public static List<RemindItem> RemindItemList { get { return remindItemList; } }

#region 实始化
static ReceivablesRemindConfig()
{
fullConfigPath = string.Format("{0}App_Data\\ReceivablesRemind.xml", HttpRuntime.AppDomainAppPath);
Init();
try
{
watcher = new FileSystemWatcher(string.Format("{0}App_Data\\", HttpRuntime.AppDomainAppPath), "ReceivablesRemind.xml");
watcher.IncludeSubdirectories = false;
watcher.NotifyFilter = NotifyFilters.LastWrite;
watcher.Changed += delegate(Object sender, FileSystemEventArgs e)
{
Init();
};
watcher.EnableRaisingEvents = true;
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
}

private static void Init()
{
lock (lockHelper)
{
try
{
remindItemList = XmlSerializeUtils.Load<List<RemindItem>>(fullConfigPath);
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
}
}

/// <summary>
/// 保存配置信息到文件
/// </summary>
private static void Save()
{
lock (lockHelper)
{
XmlSerializeUtils.Save(remindItemList, fullConfigPath);
}
Init();
}

#endregion

/// <summary>
/// 从配置文件中读取可合并广告位配置信息
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static RemindItem GetRemindItem(string type)
{
RemindItem remindItem = RemindItemList.Find(delegate(RemindItem item)
{
return item.Type == type;
});
return remindItem;
}
}

/// <summary>
/// 反序列化
/// </summary>
/// <param name="filename">文件路径</param>
/// <returns></returns>
public static T Load<T>(string filename)
{
Type type=typeof(T);
FileStream fs = null;
try
{
// open the stream...
fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
XmlSerializer serializer = new XmlSerializer(type);
return (T)serializer.Deserialize(fs);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (fs != null)
fs.Close();
}
}


/// <summary>
/// 序列化
/// </summary>
/// <param name="obj">对象</param>
/// <param name="filename">文件路径</param>
public static bool Save(object obj, string filename)
{
bool success = false;

FileStream fs = null;
// serialize it...
try
{
fs = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
XmlSerializer serializer = new XmlSerializer(obj.GetType());
serializer.Serialize(fs, obj);
success = true;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (fs != null)
fs.Close();
}
return success;

}
huayy 2011-10-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wknight_it 的回复:]
table1表
bid name
1 A
2 B

table2表
id order bid
1 1 1
2 2 2
3 3 2
4 4 2
5 5 2

table2的bid是table1的主键,标识其是A还是B
order存储的就是<order>1</order>这些值


LZ,这个结构是否是你要导出数据的结构?
[/Quote]


table1表
name
A
B

table2表
table1_name 数据
a 1
b 2
b 3
b 4
b 5

我其实是想得到这样的数据
风骑士之怒 2011-10-19
  • 打赏
  • 举报
回复
table1表
bid name
1 A
2 B

table2表
id order bid
1 1 1
2 2 2
3 3 2
4 4 2
5 5 2

table2的bid是table1的主键,标识其是A还是B
order存储的就是<order>1</order>这些值


LZ,这个结构是否是你要导出数据的结构?
风骑士之怒 2011-10-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huayy 的回复:]
XML code


<?xml version="1.0" encoding="utf-8" ?>
<trade>
<buyer_nick>A</buyer_nick>
<orders list="true">
<order>1</order>
</orders>

<buyer_nick>B</buyer_nick>
<orders list="true">
<orde……
[/Quote]
你这个话说得有点绕口

能不能根据你提供的这个XML,再描述一下导入到数据库表的结构
huayy 2011-10-19
  • 打赏
  • 举报
回复
又发了一个帖子,地址
http://topic.csdn.net/u/20111019/11/b257dddd-029a-436d-883b-6241051fca70.html

到时候一起结贴

62,050

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧