2012-01-24 25 views
5

Tôi có một tài liệu XML như sau:XPath: Elements Chọn Direct Child

<parent> 
<child1> 
    <data1>some data</data1> 
</child1> 
<child2> 
    <data2>some data</data2> 
</child2> 
<child3> 
    <data3>some data</data3> 
</child3> 
</parent> 

Tôi muốn để có thể có được con trực tiếp của cha mẹ (hoặc các yếu tố tôi ghi rõ) vì vậy mà tôi sẽ phải các nút child1, child2 và child3.

Có thể?

+0

'con' trong [this] (http://www.w3schools.com/xsl/xpath_axes.asp) có thể hữu ích. – shellbye

Trả lời

9

Hoặc thậm chí:

/*/* 

tùy chọn này chọn tất cả phần tử - con của phần tử trên cùng (trong trường hợp của bạn có tên parent) của tài liệu XML.

XSLT - dựa xác minh:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 

<xsl:strip-space elements="*"/> 

<xsl:template match="/"> 
    <xsl:copy-of select="/*/*"/> 
</xsl:template> 
</xsl:stylesheet> 

khi chuyển đổi này được áp dụng trên các tài liệu XML cung cấp:

<parent> 
    <child1> 
     <data1>some data</data1> 
    </child1> 
    <child2> 
     <data2>some data</data2> 
    </child2> 
    <child3> 
     <data3>some data</data3> 
    </child3> 
</parent> 

biểu thức XPath được đánh giá và các nút chọn là đầu ra:

<child1> 
    <data1>some data</data1> 
</child1> 
<child2> 
    <data2>some data</data2> 
</child2> 
<child3> 
    <data3>some data</data3> 
</child3> 
4

này nên chọn tất cả các phần tử con của <parent>

/parent/* 

PHP Ví dụ

$xml = <<<_XML 
<parent> 
    <child1> 
    <data1>some data</data1> 
    </child1> 
    <child2> 
    <data2>some data</data2> 
    </child2> 
    <child3> 
    <data3>some data</data3> 
    </child3> 
</parent> 
_XML; 

$doc = new DOMDocument(); 
$doc->loadXML($xml); 

$xpath = new DOMXPath($doc); 
$children = $xpath->query('/parent/*'); 
foreach ($children as $child) { 
    echo $child->nodeName, PHP_EOL; 
} 

Tạo

child1 
child2 
child3 
+0

Hmm, điều đó không hiệu quả đối với tôi, nhưng điều này đã làm: // parent/* –

+0

@NicHubbard Làm việc với tôi bằng cách sử dụng 'DOMDocument' và' DOMXpath' của PHP. Đó có phải là XML thực tế của bạn không? – Phil

+0

Không, đó chỉ là một ví dụ, nhưng đó là ý tưởng tương tự tôi cần giải quyết. –