加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml – XPath来获取没有父代的所有子节点(元素,注释和文本)

发布时间:2020-12-16 08:09:12 所属栏目:百科 来源:网络整理
导读:我需要一个XPath来获取所有的ChildNodes(包括文本元素,注释元素和子元素)没有父元素。任何帮助 示例示例: DOCPRESENTEDIN X First Text Node #1 y Y can Have Child Nodes # child deep to it /child /y Second Text Node #2 z/ /X EVTS evt/ evt mtg_desc
我需要一个XPath来获取所有的ChildNodes(包括文本元素,注释元素和子元素)没有父元素。任何帮助

示例示例:

<DOC>
<PRESENTEDIN>
    <X>
        First Text Node #1 
        <y> Y can Have Child Nodes # 
            <child> deep to it </child> 
         </y>
         Second Text Node #2 <z/> 
    </X>
    <EVTS>
        <evt/>
        <evt>
            <mtg_descr> SAE 2006 World Congress &amp; Exhibition </mtg_descr>
            <sess_descr> Advanced Hybrid Vehicle Powertrains (Part 1 of 5) </sess_descr>
            <loc> Detroit,MI,United States </loc>
            <sess_prod_grp_cd> TSESS </sess_prod_grp_cd>
            <sess_evt_name> P13 </sess_evt_name>
            <sess_gen_num> 138352 </sess_gen_num>
            <mtg_start_dt> 04/03/2006 </mtg_start_dt>
            <mtg_end_dt> 04/06/2006 </mtg_end_dt>
            <desig> CONGRESS-2006 </desig>
        </evt>
    </EVTS>
    <EVTTYPE>PAPER</EVTTYPE>
    <SUPERTECH>
        <![CDATA[C8585]]>
    </SUPERTECH>
</PRESENTEDIN>

XPATH TRIED

1. $doc/PRESENTEDIN/X
   2. $doc/PRESENTEDIN/X/descendant::*
   2. $doc/PRESENTEDIN/X/self::*

预期输出

First Text Node #1 
    <y> Y can Have Child Nodes # 
        <child> deep to it </child> 
     </y>
     Second Text Node #2 <z/>

我不想

<X>
  First Text Node #1 
        <y> Y can Have Child Nodes # 
            <child> deep to it </child> 
         </y>
         Second Text Node #2 <z/> 
</X>
从XPath( http://www.w3.org/TR/xpath/#location-paths)的文档:

child::* selects all element
children of the context node

child::text() selects all text node
children of the context node

child::node() selects all the
children of the context node,whatever
their node type

所以我想你的答案是:

$doc/PRESENTEDIN/X/child::node()

如果你想要一个flatten数组的所有嵌套节点:

$doc/PRESENTEDIN/X/descendant::node()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读