我有一个XML文档,如下所示:
<parent>
<child1>
<data1>some data</data1>
</child1>
<child2>
<data2>some data</data2>
</child2>
<child3>
<data3>some data</data3>
</child3>
</parent>
我希望能够获得父项的直接子项(或我指定的元素),以便我有child1,child2和child3节点。
可能的?
答案 0 :(得分:10)
甚至:
/*/*
这将选择所有元素 - XML文档的顶部元素(在您的案例中名为parent
)的子元素。
基于XSLT的验证:
<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>
将此转换应用于提供的XML文档:
<parent>
<child1>
<data1>some data</data1>
</child1>
<child2>
<data2>some data</data2>
</child2>
<child3>
<data3>some data</data3>
</child3>
</parent>
评估XPath表达式并输出所选节点:
<child1>
<data1>some data</data1>
</child1>
<child2>
<data2>some data</data2>
</child2>
<child3>
<data3>some data</data3>
</child3>
答案 1 :(得分:6)
这应该选择<parent>
/parent/*
PHP示例
$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;
}
可生产
child1
child2
child3