1

私がこのXMLを持っているとしましょう:

<Routes>
  <Route ref="timeconditions">
   <Table>
     <Tablename>timeconditions</Tablename>
     <Fields>
       <Fieldsname>truegoto</Fieldsname>
     </Fields>
   </Table>
  </Route>
</Routes>

PHP:

$doc    = new SimpleXMLElement('routingConfig.xml', null, true);
$foo = $doc->xpath('/Routes/Route[@ref="timeconditions"]/Table/Fields[@Fieldsname="truegoto"]/ancestor::Tablename');
print_r($foo);

空白の配列を返します。今、私は基本的に子供を掘り下げてからその親にバックアップしていることに気づきましたが、私の文脈ではそれが私がしなければならないことです。私は何が間違っているのですか?<Fieldsname>falsegoto</Fieldsname>と呼ばれる親の兄弟の値を取得しようとしています<Tablename>

これを見つめながら交差する…。

4

2 に答える 2

1

FieldsFieldsname子ノードの属性はなく、祖先ではないTablename兄弟でもあります。Fields試す

$foo = $doc->xpath('/Routes/Route[@ref="timeconditions"]/Table/Fields[Fieldsname="truegoto"]/preceding-sibling::Tablename');
于 2012-09-12T21:38:04.190 に答える
0

使用:

/*/*/Table[Fields/Fieldsname = 'truegoto']/Tablename

これにより、文字列値がである孫 (親が)を持つ要素Tablenameの子であり、その (要素) が XML ドキュメントの最上位要素の孫である要素が選択されます。TableFieldsFieldsname'truegoto'Table

注意してください:

  1. 逆軸は使用しません。

  2. このため、式は短く、単純で、理解しやすくなっています。

于 2012-09-13T05:16:45.383 に答える