web-dev-qa-db-ja.com

子ノードではなく、ノードで直接テキストのみを選択します

子のテキストを選択せず​​にノードのテキストを取得するにはどうすればよいですか?

<div id="comment">
     <div class="title">Editor's Description</div>
     <div class="changed">Last updated: </div>
     <br class="clear">
     Lorem ipsum dolor sit amet.
</div>

つまり、Lorem ipsum dolor sit amet. のではなく Editor's DescriptionLast updated: Lorem ipsum dolor sit amet.

42
Moak

提供されたXMLドキュメント:

<div id="comment">
      <div class="title">Editor's Description</div>
      <div class="changed">Last updated: </div>
      <br class="clear">
      Lorem ipsum dolor sit amet. 
</div> 

一番上の要素/divには、テキストノードである4つの子ノードがあります。これら4つのうちの最初の3つtext-node 子供たちは whitespace-only。これらの最後の4 text-node子供たちが欲しがるものです。

使用

/div/text()[last()]

これとは異なります

/div/text()

後者は(whitespace-onlyノードはXMLパーサーによって保持されます)4つのテキストノードすべてを選択しますが、最後のノードのみが必要です。

代替案は(正確にわからない場合はtext-node希望):

/div/text()[normalize-space()]

これにより、すべてのtext-node-children//divでないwhitespace-onlyテキストノード。

44

_._の代わりにtext()を選択するだけです:

_div/text()
_

指定されたXMLフラグメントで、これは次を返します:

_Lorem ipsum dolor sit amet.
_
13
Lucero

これはどう :
$doc/node()[3]/text()
$ docにXMLがあると仮定します。

0
bosari