以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于获取xml数据求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=44426)

--  作者:yd0731
--  发布时间:2013/12/30 18:55:00
--  关于获取xml数据求助

,目前通过下面的语句,能够获取一维数组的数据:

Dim strXML As String = Functions.Execute("getXML","http://10.xxx.x.xxx:8080/cfmSoa_client/accountInfo/getAccountInfoList?")
    Dim xmlDoc As New System.XML.XmlDocument
    xmlDoc.LoadXml(strXML)
    Dim ndList As System.XML.XmlNodeList = xmlDoc.GetElementsByTagName("Code")
    e.Form.Controls("Label1").Text = ndList(0).InnerText
    e.Form.Controls("Label2").Text = ndList(1).InnerText

 

对于多维的不知道如何做,比如上面的("Code")变更为("Code","Name"),如何让:

 e.Form.Controls("Label1").Text 显示的是Code的第一个值,

 e.Form.Controls("Label2").Text 显示的是Name的第一个值。

 

请老师指导

[此贴子已经被作者于2013-12-31 14:42:48编辑过]

--  作者:有点甜
--  发布时间:2013/12/30 19:29:00
--  
 不明白你的意思,ndlist(0)得到类型是XmxNode,要获取什么都可以啊。

[此贴子已经被作者于2013-12-30 19:29:08编辑过]

--  作者:yd0731
--  发布时间:2013/12/30 20:30:00
--  

不好意思,没有表述清楚,这样的,假设有下面的数据

 

   

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

- <root xmlns:ns2="http://us.service.lrd.org.cn">

- <AccountInfo>

  <Code>3821</Code>

  <Name>xx分公司1</Name>

  <periodName>DEC-10</periodName>

  </AccountInfo>

- <AccountInfo>

  <Code>3822</Code>

  <Name> xx分公司2</Name>

  <periodName>DEC-10</periodName>

  </AccountInfo>

- <AccountInfo>

  <Code>3823</Code>

  <Name> xx分公司3</Name>

  <periodName>DEC-10</periodName>

  </AccountInfo>

  </root>

我需要将上面得到的数据用数组取出来,得到下面的结果

e.Form.Controls("Label1").Text=\'3821\'         e.Form.Controls("Label2").Text=\'xx分公司1\'        e.Form.Controls("Label3").Text=\'DEC-10\'
 e.Form.Controls("Label4").Text=\'3822\'        e.Form.Controls("Label5").Text=\'xx分公司2\'        e.Form.Controls("Label6").Text=\'DEC-10\'
 e.Form.Controls("Label7").Text=\'3823\'        e.Form.Controls("Label8").Text=\'xx分公司3\'        e.Form.Controls("Label9").Text=\'DEC-10\'

 

那么这后面的语句该如何写呢:

Dim strXML As String = Functions.Execute("getXML","http://10.xxx.x.xxx:8080/cfmSoa_client/accountInfo/getAccountInfoList?")
    Dim xmlDoc As New System.XML.XmlDocument
    xmlDoc.LoadXml(strXML)

[此贴子已经被作者于2013-12-31 14:43:12编辑过]

--  作者:有点甜
--  发布时间:2013/12/30 20:33:00
--  
 你应该先去获取 AccountInfo 节点,然后查找它的子节点,看2楼的方法。
--  作者:有点甜
--  发布时间:2013/12/30 20:37:00
--  
 又或者是,你获取code一次,再获取name一次,保存在两个变量里,分别获取。
--  作者:yd0731
--  发布时间:2013/12/30 20:42:00
--  
以下是引用有点甜在2013-12-30 20:37:00的发言:
 又或者是,你获取code一次,再获取name一次,保存在两个变量里,分别获取。

这个方法我会,就是

Dim ndList As System.XML.XmlNodeList = xmlDoc.GetElementsByTagName("Code")
然后,再做一次

Dim ndList1 As System.XML.XmlNodeList = xmlDoc.GetElementsByTagName("name")

 

就可以取到想要的数据,原来是想是不是还有简单的方法,呵呵,想偷懒

[此贴子已经被作者于2013-12-30 20:44:16编辑过]

--  作者:yd0731
--  发布时间:2013/12/30 20:59:00
--  

继续请教甜老师。如何知道Dim ndList As System.XML.XmlNodeList = xmlDoc.GetElementsByTagName("Code") 取到多少个数据呢,比如上面的3821,3822,3823三个数据,如何获取其有多少个数据呢?

除了用下面的方法,还有其他办法吗?

Dim m As Integer
For Each Nd As System.XML.XmlNode In ndList
m=m+1
Next
output.Show(m)

[此贴子已经被作者于2013-12-30 21:04:50编辑过]

--  作者:有点甜
--  发布时间:2013/12/30 21:09:00
--  
 你看看这个对象的属性和方法,你就知道怎么写了


--  作者:yd0731
--  发布时间:2013/12/30 21:39:00
--  
呵呵,    e.Form.Controls("Label2").Text = ndList1.count  得到想要的结果,谢谢有点甜老师!
--  作者:qianqian1530
--  发布时间:2014/3/2 13:11:00
--  
 咱就不能分享一下成果吗