asp如何读取这样的XML文件?

windflow 2007-03-14 08:15:35
XML类似这样:
...
<ppp>
<name>XXXX</name>
<style>YYYY</style>
<coordinates>xxxxxx</coordinates>
<point>hhhhhh</point>
.....
</ppp>
<ppp>
<name>XXXX</name>
<style>YYYY</style>
<coordinates>xxxxxx</coordinates>
<icon>kkkkk</icon>
<point>hhhhhh</point>
</ppp>
我要读取ppp下面的name和point,但是每个ppp节点的子节点数不固定,有的节点可能会有<icon>,我这样写:
set folds=xml.getElementsByTagName("ppp")
nodeCount = folds.length
For i=0 to nodeCount-1
set node=folds.item(i)
city=node.childNodes.item(0).text //这是得到name
如何得到point呢?如果用node.childNodes.item(3).text,对某些节点有<icon>的就不对了,我想如何用名称获取子节点值?类似javascript的写法:getElementsByTagName("point")[0].childNodes[0].nodeValue.有吗?
...全文
451 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxylvmnn 2007-03-14
  • 打赏
  • 举报
回复
...
日文乱码...
windflow 2007-03-14
  • 打赏
  • 举报
回复
文件有1M多,列出前面的:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>~GE61.kmz</name>
<open>1</open>
<Style id="4123:200,000, - 500,000 (site) (highlighted)">
<IconStyle>
<Icon>
<href>http://kh.google.com:80/flatfile?lf-0-icons/773_v5.png</href>
</Icon>
</IconStyle>
<LabelStyle>
<color>ff0000ff</color>
</LabelStyle>
<LineStyle>
<antialias>0</antialias>
</LineStyle>
<PolyStyle>
<fill>0</fill>
<outline>0</outline>
</PolyStyle>
</Style>
<StyleMap id="4123">
<Pair>
<key>normal</key>
<styleUrl>#4123:200,000, - 500,000 (site)</styleUrl>
</Pair>
<Pair>
<key>highlight</key>
<styleUrl>#4123:200,000, - 500,000 (site) (highlighted)</styleUrl>
</Pair>
</StyleMap>
<Style id="default">
</Style>
<Style id="default_copy0+icon=http://maps.google.com/mapfiles/kml/pal3/icon63.png">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/pal3/icon63.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="khStyle655">
<IconStyle id="khIconStyle657">
<Icon>
<href>http://maps.google.com/mapfiles/kml/pal3/icon63.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="khStyle528">
<IconStyle id="khIconStyle532">
<Icon>
<href>http://maps.google.com/mapfiles/kml/pal3/icon52.png</href>
</Icon>
</IconStyle>
</Style>
<Style id="khStyle826">
<IconStyle id="khIconStyle828">
<Icon>
</Icon>
</IconStyle>
</Style>
<StyleMap id="default_copy0+nicon=http://maps.google.com/mapfiles/kml/pal3/icon63.png+hicon=http://maps.google.com/mapfiles/kml/pal3/icon55.png">
<Pair>
<key>normal</key>
<styleUrl>#default_copy0+icon=http://maps.google.com/mapfiles/kml/pal3/icon63.png</styleUrl>
</Pair>
<Pair>
<key>highlight</key>
<styleUrl>#default_copy0+icon=http://maps.google.com/mapfiles/kml/pal3/icon55.png</styleUrl>
</Pair>
</StyleMap>
<Style id="default_copy0+icon=http://maps.google.com/mapfiles/kml/pal3/icon55.png">
<IconStyle>
<scale>1.1</scale>
<Icon>
<href>http://maps.google.com/mapfiles/kml/pal3/icon55.png</href>
</Icon>
</IconStyle>
<LabelStyle>
<scale>1.1</scale>
</LabelStyle>
</Style>
<Style id="4123:200,000, - 500,000 (site)">
<IconStyle>
<Icon>
<href>http://kh.google.com:80/flatfile?lf-0-icons/773_v5.png</href>
</Icon>
</IconStyle>
<LabelStyle>
<color>ff0000ff</color>
</LabelStyle>
<LineStyle>
<antialias>0</antialias>
</LineStyle>
<PolyStyle>
<fill>0</fill>
<outline>0</outline>
</PolyStyle>
</Style>
<Folder>
<name>China 琛屾斂鍦板悕</name>
<open>1</open>
<description>Author: Weijian Fang
Email: wjfang at gmail dot com
Version: 0.1
Date: July 28th, 2005
Licence: GPL</description>
<Folder>
<name>鍖椾含甯?/name>
<Placemark>
<name>鍖椾含</name>
<LookAt>
<longitude>116.46</longitude>
<latitude>39.92</latitude>
<altitude>0</altitude>
<range>12558.37809349581</range>
<tilt>2.525867607205492e-012</tilt>
<heading>-2.712738017637951e-014</heading>
</LookAt>
<styleUrl>#default</styleUrl>
<Style>
<IconStyle>
<Icon>
</Icon>
</IconStyle>
</Style>
<Point>
<coordinates>116.46,39.92,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>骞宠胺</name>
<visibility>0</visibility>
<LookAt>
<longitude>117.1</longitude>
<latitude>40.13</latitude>
<altitude>0</altitude>
<range>12558.37809349581</range>
<tilt>2.525867607205492e-012</tilt>
<heading>-2.712738017637951e-014</heading>
</LookAt>
<styleUrl>#default</styleUrl>
<Point>
<coordinates>117.1,40.13,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>瀵嗕簯</name>
<visibility>0</visibility>
<LookAt>
<longitude>116.85</longitude>
<latitude>40.37</latitude>
<altitude>0</altitude>
<range>12558.37809349581</range>
<tilt>2.525867607205492e-012</tilt>
<heading>-2.712738017637951e-014</heading>
</LookAt>
<styleUrl>#default</styleUrl>
<Point>
<coordinates>116.85,40.37,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>椤轰箟</name>
<visibility>0</visibility>
<LookAt>
<longitude>116.65</longitude>
<latitude>40.13</latitude>
<altitude>0</altitude>
<range>12558.37809349581</range>
<tilt>2.525867607205492e-012</tilt>
<heading>-2.712738017637951e-014</heading>
</LookAt>
<styleUrl>#default</styleUrl>
<Point>
<coordinates>116.65,40.13,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>閫氬幙</name>
<visibility>0</visibility>
<LookAt>
<longitude>116.67</longitude>
<latitude>39.92</latitude>
<altitude>0</altitude>
<range>12558.37809349581</range>
<tilt>2.525867607205492e-012</tilt>
<heading>-2.712738017637951e-014</heading>
</LookAt>
<styleUrl>#default</styleUrl>
<Point>
<coordinates>116.67,39.92,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>鎬€鏌?/name>
<visibility>0</visibility>
<LookAt>
<longitude>116.62</longitude>
<latitude>40.32</latitude>
<altitude>0</altitude>
<range>12558.37809349581</range>
<tilt>2.525867607205492e-012</tilt>
<heading>-2.712738017637951e-014</heading>
</LookAt>
<styleUrl>#default</styleUrl>
<Point>
<coordinates>116.62,40.32,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>澶у叴</name>
<visibility>0</visibility>
<LookAt>
<longitude>116.33</longitude>
<latitude>39.73</latitude>
<altitude>0</altitude>
<range>12558.37809349581</range>
<tilt>2.525867607205492e-012</tilt>
<heading>-2.712738017637951e-014</heading>
</LookAt>
<styleUrl>#default</styleUrl>
<Point>
<coordinates>116.33,39.73,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>鎴垮北</name>
<visibility>0</visibility>
<LookAt>
<longitude>115.98</longitude>
<latitude>39.72</latitude>
<altitude>0</altitude>
<range>12558.37809349581</range>
<tilt>2.525867607205492e-012</tilt>
<heading>-2.712738017637951e-014</heading>
</LookAt>
<styleUrl>#default</styleUrl>
<Point>
<coordinates>115.98,39.72,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>寤跺簡</name>
<visibility>0</visibility>
<LookAt>
<longitude>115.97</longitude>
<latitude>40.47</latitude>
<altitude>0</altitude>
<range>12558.37809349581</range>
<tilt>2.525867607205492e-012</tilt>
<heading>-2.712738017637951e-014</heading>
</LookAt>
<styleUrl>#default</styleUrl>
<Point>
<coordinates>115.97,40.47,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>鏄屽钩</name>
<visibility>0</visibility>
<LookAt>
<longitude>116.2</longitude>
<latitude>40.22</latitude>
<altitude>0</altitude>
<range>12558.37809349581</range>
<tilt>2.525867607205492e-012</tilt>
<heading>-2.712738017637951e-014</heading>
</LookAt>
<styleUrl>#default</styleUrl>
<Point>
<coordinates>116.2,40.22,0</coordinates>
</Point>
</Placemark>
</Folder>
<Folder>
<name>涓婃捣甯?/name>
<Placemark>
<name>涓滄柟鏄庣彔鐢佃濉?/name>
<visibility>0</visibility>
<LookAt>
<longitude>121.4993220072652</longitude>
<latitude>31.2435286147181</latitude>
  • 打赏
  • 举报
回复
to devms() :
//ppp/name 的操作对象是谁?是root?我的xml文件嵌套很深,ppp上面还有几个父节点呢
------------------------------------

你最好把整个结构给出来看看
lkh42002 2007-03-14
  • 打赏
  • 举报
回复
nodeppp.selectSingleNode("point")
windflow 2007-03-14
  • 打赏
  • 举报
回复
to xuStanly(黑金) :这样不对吧?
case node.childNodes.item(0)是<name>没有选择的,我的问题在于:对于有的ppp节点,其<point>的子节点位置是第3个,而有的ppp节点,其<point>的子节点位置是第4个。
to devms() :
//ppp/name 的操作对象是谁?是root?我的xml文件嵌套很深,ppp上面还有几个父节点呢
  • 打赏
  • 举报
回复
//ppp/name
//ppp/point
xuStanly 2007-03-14
  • 打赏
  • 举报
回复
select case node.childNodes.item(0).tagName
  case "name"
    
  case "point"

end select
windflow 2007-03-14
  • 打赏
  • 举报
回复
感谢devms(),按照你给的xpath表达式我做出来了,用一次循环,因为我是要写入数据库的,所以只能这样。
给分,结帖。
  • 打赏
  • 举报
回复
关循环什么事,你由xpath取回nodelist后已经不用关心文件大小问题了,甚至从你的dom被构建完成开始你就不用关心了

我只给xpath表达式了

//Placemark/name
//Placemark/coordinates

或者你还是执迷不悟以为和效率有关的话
取得//Placemark的节点列表,然后遍历一次此列表,判断列表子元素是否有name和coordinates节点,然后分别取得这两个节点的值

windflow 2007-03-14
  • 打赏
  • 举报
回复
to love007(风中的风):你的思路应该可行,但是我不想两次循环,我的xml文件有1M多,两次循环效率太低。
zhangjun 2007-03-14
  • 打赏
  • 举报
回复
我的例子:
readxml.asp:

<%
Dim xmlDoc
Set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async = false
xmlDoc.load(Server.Mappath("test.xml"))
rem//*******************读name
dim NameNodeList
Set NameNodeList = xmlDoc.SelectNodes("//T/ppp/name")
Dim i
For i=0 to NameNodeList.length - 1
response.write("Name"&Cstr(i+1)&":="&NameNodeList(i).text&"<br>")
Next
response.write("<br><br>")
rem//*******************读point
dim pointNodeList
Set pointNodeList = xmlDoc.SelectNodes("//T/ppp/point")
Dim j
For j=0 to pointNodeList.length - 1
response.write("point"&Cstr(j+1)&":="&pointNodeList(j).text&"<br>")
Next

Set xmlDoc = Nothing
Set NameNodeList = Nothing
Set pointNodeList= Nothing
%>

test.xml:

<?xml version="1.0" encoding="UTF-8"?>
<T>
<ppp>
<name>pppppp</name>
<style>YYYY</style>
<coordinates>xxxxxx</coordinates>
<point>ooooo</point>
</ppp>
<ppp>
<name>XXXX</name>
<style>YYYY</style>
<coordinates>xxxxxx</coordinates>
<icon>kkkkk</icon>
<point>hhhhhh</point>
</ppp>
<ppp>
<name>rrr</name>
<style>YYYY</style>
<coordinates>xxxxxx</coordinates>
<icon>kkkkk</icon>
<point>ttt</point>
</ppp>
<ppp>
<name>1111</name>
<style>YYYY</style>
<coordinates>xxxxxx</coordinates>
<point>222222</point>
</ppp>
</T>


结果:
Name1:=pppppp
Name2:=XXXX
Name3:=rrr
Name4:=1111


point1:=ooooo
point2:=hhhhhh
point3:=ttt
point4:=222222
windflow 2007-03-14
  • 打赏
  • 举报
回复
to devms() :
取<placemark>里面的<name>和<coordinates>.
  • 打赏
  • 举报
回复
楼主,那你现在告诉我你要取的是你给出的这个结构的哪个节点

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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