xml元素中不常存在节点

时间:2015-10-13 08:34:32

标签: xml asp-classic xml-parsing

 <ObjectArrayToXml xmlns="http://www.something.com/">
      <itemslist>
        <Size>18</Size>
        <ItemInfo>
          <Pass>5225</Pass>
          <AgentName>aaaaaa</AgentName>
          <Document>6763</Document>
        </ItemInfo>
        <ItemInfo>
          <Pass>1223</Pass>
          <Document>77755</Document>
**here the tag of AgentName will be missing
        </ItemInfo>
        <ItemInfo>
          <Pass>45344</Pass>
          <AgentName>bbbbbbb</AgentName>
          <Document>22234</Document>
        </ItemInfo>
      </itemslist>
    </ObjectArrayToXml>

我们正在获得上述结构,包含所有3个标签Pass,AgentName,Document,每个项目超过4年 我们一直在成功地进行扫描和打印:

Set NodeList = xmlDoc.documentElement.selectNodes("//ObjectArrayToXml/itemslist/ItemInfo")
     For Each Node In NodeList
response.write Node.selectSingleNode("Pass").text
response.write Node.selectSingleNode("AgentName").text
response.write Node.selectSingleNode("Document").text   
     Next  

xml的结构发生了变化,现在我们并不总是得到AgentName的标签 - 它可能根本不适用于某些项目。 我现在需要检查每个项目是否存在标签,然后我写了这段代码:

set xxx = xmlDoc.selectSingleNode("//AgentName")
If Not xxx Is Nothing Then
response.write Node.selectSingleNode("AgentName").text
End If

如果所有商品都有此标签或所有商品都没有此标签,则效果很好。但是,一旦某些项目有此标记而其他项目没有,那么页面崩溃,我会给出500错误。 我意识到xmlDoc.selectSingleNode(&#34; // AgentName&#34;)必须只查看第一个项目并假设所有其余项目具有相同的taga,并且不检查每个项目是否存在AgentName标记。 我可能不对,你能建议如何检查每个项目中是否存在这个标签吗?

1 个答案:

答案 0 :(得分:0)

在每次迭代中检查当前AgentName的{​​{1}},在Node循环中尝试类似的内容:

For Each