0
<1:1>
    <1:b/>
    <1:body>
        <1:P>
            <1:PPR></1:PPR>
            <1:r>
                <1:rPR></1:rPR>
                <1:t>text here</1:t>
            </1:r>
        </1:P>
    </1:body>
</1:1>

我的 xml 看起来像这样,我需要从每个“1:p”中获取“1:t”

但我有一些问题,因为我不能仅仅$document->1:1->1:body->1:P->1:r->1:t 因为它不喜欢冒号

谁能想到解决这个问题的任何方法?我试过把它们放在变量中,但没有快乐......

这是我到目前为止所拥有的:

$document = simplexml_load_string($xml);
$body = "1:body";
$r = "1:r";
$t = "1:t";
foreach ($document->$body as $p) {
    echo $p->$r->$t;
}
4

1 回答 1

0

XML 元素名称不能以数字开头。您的代码将产生大量警告,不幸的是 XML 将无法解析。

Warning: simplexml_load_string(): Entity: line 1: parser error : StartTag: invalid element name in /Users/joelhinz/Kod/test/test.php on line 16
Warning: simplexml_load_string(): <1:1> in /Users/joelhinz/Kod/test/test.php on line 16
Warning: simplexml_load_string():  ^ in /Users/joelhinz/Kod/test/test.php on line 16
Warning: simplexml_load_string(): Entity: line 1: parser error : Extra content at the end of the document in /Users/joelhinz/Kod/test/test.php on line 16
Warning: simplexml_load_string(): <1:1> in /Users/joelhinz/Kod/test/test.php on line 16
Warning: simplexml_load_string():  ^ in /Users/joelhinz/Kod/test/test.php on line 16
Warning: Invalid argument supplied for foreach() in /Users/joelhinz/Kod/test/test.php on line 20

我想,您必须将其转换为正确的 XML,或者使用不那么挑剔的解析器。

关于冒号问题,如果你让其余的工作,你可能会做$document->{1:1}->{1:body}等等。

于 2013-10-05T12:51:51.800 回答