首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > ASP >

ASP读取XML的时候遇上空值,使用XPATH应该怎么办呢

2013-06-19 
ASP读取XML的时候遇上空值,使用XPATH应该怎么处理呢?假设有个这样的XMLbookstorestorename小寨店/sto

ASP读取XML的时候遇上空值,使用XPATH应该怎么处理呢?
假设有个这样的XML


<bookstore>
  <storename>小寨店</storename>
  <storetel>029-8888 8888</storetel>
  <storeaddr>西安市长安中路100号</storeaddr>
  <bookclass>
    <classname>社科类</classname>
    <classadmin>李四</classadmin>
    <classlist>
      <bookname>XXX时代</bookname>
      <bookprice>CNY90.00</bookprice>
      <bookpress/>
    </classlist>
  </bookclass>
  <bookclass>
    <classname>小说类</classname>
    <classadmin>王五</classadmin>
    <classlist>
      <bookname>冰与火之歌1</bookname>
      <bookprice>CNY70.00</bookprice>
      <bookpress>HBO出版社</bookpress>
      <bookname>冰与火之歌2</bookname>
      <bookprice>CNY70.00</bookprice>
      <bookpress>HBO出版社</bookpress>
      <bookname>冰与火之歌3</bookname>
      <bookprice>CNY70.00</bookprice>
      <bookpress>HBO出版社</bookpress>
    </classlist>
  </bookclass>
    <classname>IT类</classname>
    <classadmin>张三</classadmin>
    <classlist>
      <bookname>C语言基础教程</bookname>
      <bookprice>CNY20.00</bookprice>
      <bookpress>高等教育出版社</bookpress>
      <bookname>Think in C++</bookname>
      <bookprice>CNY90.00</bookprice>
      <bookpress>清华大学出版社</bookpress>
      <bookname>Think in Java</bookname>
      <bookprice>CNY89.00</bookprice>
      <bookpress>清华大学出版社</bookpress>
    </classlist>
  </bookclass>
</bookstore>

在读取bookclass节点的时候,如果其子节点(或者是孙节点,反正是下面的节点)中有个值是像例子里面那样,空的,直接用<bookpress/>的,就不读取了,直接读取下一个。

我今天试着用selectNodes("classlist/bookpress[not(text())]"),不行,不知道是哪里的问题。求各位高人解答..
XML是没办法改的,这是个webservice传递过来的的结果。
[解决办法]
selectNodes("/bookstore/bookclass[classlist/bookpress[.!='']]")
[解决办法]
Set objXML= CreateObject("MSXML2.DOMDocument")
'===
set objStore= objXML.getElementsByTagName("bookstore")


set objBookclass=objStore.item(0).getElementsByTagName("bookclass")
'这不是就抓到所有的bookclass节点了吗,然后下面开始逐个分析节点

For i=0 to objBookclass.length-1
   set bps=objBookclass.item(i).getElementsByTagName("bookpress")
   if bps.length=0 or bps.item(0).text="" then
     set classname=objBookclass.item(i).getElementsByTagName("classname")
     set classadmin=objBookclass.item(i).getElementsByTagName("classadmin")
     response.write classname.item(0).text&"
[解决办法]
"&classadmin.item(0).text
   end if
Next
Set objBookclass=Nothing
Set objStore=Nothing
Set objXML=Nothing

热点排行