2016-12-22 4 views
1

特定の子をスキップして親タグを取得するxpath式を記述したいとします。php xpath:特定の子をスキップしてすべての親を選択する方法

<root> 
    <paren> 
     <child1>10</child1> 
     <child2>20</child2> 
    </paren> 

    <paren> 
     <child1>101</child1> 
     <child2>202</child2> 
    </paren> 
</root> 

私は、次のPHPコードを試してください:

$output_xml = $input_xml->xpath('//paren/*[not(self::child3)]'); 

それを私は<child3>をスキップして、XPathの後に次のような出力を取得したい

<root> 
    <paren> 
     <child1>10</child1> 
     <child2>20</child2> 
     <child3>30</child3> 
    </paren> 

    <paren> 
     <child1>101</child1> 
     <child2>202</child2> 
     <child3>303</child3> 
    </paren> 
</root> 

:ここに私のソースXMLであります次の出力を出す[通知:pren &ルートタグがありません]:

<child1>10</child1> 
<child2>20</child2> 
<child1>101</child1> 
<child2>202</child2> 

予想される出力を取得するためにxpathを編集するにはどうすればよいですか?

答えて

1

純粋なXPathを使用してその出力を取得する方法はありません。要素はXPathデータモデルの単位です。たとえば、paren要素を選択すると、開始タグ<paren>、終了タグ</paren>、およびその間のすべてを選択することを意味します。 XPathクエリが元に戻すことができる元のXMLにchild3が含まれていないようなparen要素はありません。

あなたは何をしようとしているのは、XSLTを使用して通常行われているXML変換や、おそらくPHPのプログラミング言語を使用することです。

関連する問題