2010-03-23 87 views
1

我的XML结构是这样的:帮助,选择节点使用XPath

<entity id="1000070"> 
    <name>apple</name> 
    <type>category</type> 
    <entities> 
     <entity id="7002870"> 
      <name>mac</name> 
      <type>category</type> 
      <entities> 
       <entity id="7002907"> 
        <name>leopard</name> 
        <type>sub-category</type> 
        <entities> 
         <entity id="7024080"> 
          <name>safari</name> 
          <type>subject</type> 
         </entity> 
         <entity id="7024701"> 
          <name>finder</name> 
          <type>subject</type> 
         </entity> 
        </entities> 
       </entity> 
      </entities> 
     </entity> 
     <entity id="7024080"> 
      <name>iphone</name> 
      <type>category</type> 
      <entities> 
       <entity id="7024080"> 
        <name>3g</name> 
        <type>sub-category</type> 
       </entity> 
       <entity id="7024701"> 
        <name>3gs</name> 
        <type>sub-category</type> 
       </entity> 
      </entities> 
     </entity> 
     <entity id="7024080"> 
      <name>ipad</name> 
      <type>category</type> 
     </entity> 
    </entities> 
</entity> 

目前,我有选择的与不分类型节点的所有实体。

$ xmlDocument-> removeNodes(“//实体[未(类型=‘类’)”)

我不知道我会选择不包含类型=类别或类型的所有节点=子类别。

我曾尝试用:

$xmlDocument->removeNodes("//entity[not(type='category')] | //entity[not(type='sub-category')]") 

但它不工作!

回答

3

尝试:

//entity[not(type='category' or type='sub-category')] 

你会发现这个testbed有用的XPath表达式。