SimpleXMLElement:获取不同标签的准确位置到同一个父级
SimpleXMLElement: get the exact positions of different tags into the same parent
我有这个XML(简体):
<?xml version="1.0" encoding="UTF-8"?>
<book>
<section>
<p>Example text</p>
<p>Another text</p>
<img l:href="imagehref">
<p>Some other text</p>
</section>
</book>
我想从中制作一个可读的文本,所以我用 SimpleXMLElement 解析它并得到这个:
object(SimpleXMLElement) {
["p"]=>
array(3) {
...
}
["image"]=>
array(1) {
[0]=>
object(SimpleXMLElement) {
}
}
}
所有标签都按名称分组,因此我无法确定图片在文本中的位置 – 只是它存在。
问题:有什么办法可以得到<section>
中标签的准确顺序吗?像这样:
[0] => 'p',
[1] => 'p',
[2] => 'img',
[3] => 'p'
以便我可以将它们按正确的顺序转换为 HTML?
您可以遍历每个 <section>
标签的子节点。
// Assumes your string is loaded, e.g.
// $xml = simplexml_load_string($xml_string);
foreach($xml->xpath('//section') as $section) {
foreach($section->children() as $node) {
echo $node->getName(), "\n";
}
}
你可以看到 this outputs:
p
p
img
p
我有这个XML(简体):
<?xml version="1.0" encoding="UTF-8"?>
<book>
<section>
<p>Example text</p>
<p>Another text</p>
<img l:href="imagehref">
<p>Some other text</p>
</section>
</book>
我想从中制作一个可读的文本,所以我用 SimpleXMLElement 解析它并得到这个:
object(SimpleXMLElement) {
["p"]=>
array(3) {
...
}
["image"]=>
array(1) {
[0]=>
object(SimpleXMLElement) {
}
}
}
所有标签都按名称分组,因此我无法确定图片在文本中的位置 – 只是它存在。
问题:有什么办法可以得到<section>
中标签的准确顺序吗?像这样:
[0] => 'p',
[1] => 'p',
[2] => 'img',
[3] => 'p'
以便我可以将它们按正确的顺序转换为 HTML?
您可以遍历每个 <section>
标签的子节点。
// Assumes your string is loaded, e.g.
// $xml = simplexml_load_string($xml_string);
foreach($xml->xpath('//section') as $section) {
foreach($section->children() as $node) {
echo $node->getName(), "\n";
}
}
你可以看到 this outputs:
p
p
img
p