2012-01-24 11 views
5

aşağıdadır:XPath: Seç Doğrudan Çocuk Elemanları ben gibi bir XML belgesi var

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

ben olurdu böylece ebeveyn doğrudan çocukları (ya Belirttiğim elemanı) elde edebilmek istiyorum child1, child2 ve child3 düğümleri.

Mümkün mü?

+0

'child [bu] 'da (http://www.w3schools.com/xsl/xpath_axes.asp) yardımcı olabilir. – shellbye

cevap

9

Veya üretir:

/*/* 

bu, tüm belgeyi seçer - üst öğenin alt öğelerini (örneğinizde parent olarak adlandırılır) XML belgesinin.

XSLT - doğrulaması XPath ifade değerlendirilir ve bu seçilen düğümler çıkarılır

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

Bu dönüşümü sağlanan XML belgesi uygulanır

<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> 

:

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

Bu <parent>

/parent/* 
tüm alt öğelerini seçmelidir

PHP Örnek

$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; 
} 

bile

child1 
child2 
child3 
+0

Hmm, bu benim için işe yaramadı, ama bu yaptı: // parent/* –

+0

@NicHubbard PHP'nin 'DOMDocument' ve' DOMXpath' kullanarak benim için çalışır. Bu senin gerçek XML mi? – Phil

+0

Hayır, bu sadece bir örnekti, ama çözmem gereken aynı fikirdi. –

İlgili konular