2

所以我有这个 XML:var_dump

string '
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<data>
<entry key="message Type">
<![
    CDATA[
        urgent
    ]
]></entry><entry key="message Title"><![
    CDATA[
        teswt
    ]
]></entry><entry key="message Body"><![
    CDATA[
        teasd
    ]
]></entry><entry key="message Priority"><![
    CDATA[
        1
    ]
]></entry></data>
' (length=260)

我的代码如下所示:

$xml = simplexml_load_string($tablerow['data']);
$inputs = $xml->xpath("/schema/user_input[@type!='hidden']/input|/schema/input");
foreach($inputs as $cur_input) {

        $cur_input_name = (string)$cur_input['name'];
        $cur_input_value = $task_input_values[$cur_input_name];
        $input_name = isset($cur_input['label']) ? (string)$cur_input['label'] : $cur_input['name'];
}
        var_dump($tablerow['data']);

$tablerow['data']是来自数据库的 XML。任何帮助如何从中获得message Title价值?

谢谢!

4

2 回答 2

2

您使用的 XPath 表达式甚至不像您发布的 XML 文档,所以我不知道您希望如何找到您正在寻找的值。以下将从您的示例 XML 文档中提取“teswt”:

<?php
$xml = simplexml_load_string($tablerow['data']);
$title = '';

foreach ($xml->entry as $entry) {
    if ((string) $entry['key'] == 'message Title') {
        $title = (string) $entry;
        break;
    }
}

echo $title;
?>

编辑:更新为使用 SimpleXML“样式”而不是 XPath。

于 2012-09-21T13:15:15.083 回答
0

您的 XML 应该是正确的方式。

检查这个

    <?php
    $xmlString = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>
            <data>
                <entry key="message Type">
                    <![CDATA[urgent]]>
                </entry>
                <entry key="message Title">
                    <![CDATA[teswt]]>
                </entry>
                <entry key="message Body">
                    <![CDATA[xxxxx]]>
                </entry>
                <entry key="message Priority">
                    <![CDATA[1]]>
                </entry>
            </data>';

    $xml = simplexml_load_string($xmlString);

    foreach ($xml->entry as $entry)
    {   
       echo $entry['key']."<br/>";
    }
    ?>
于 2012-09-21T13:35:10.510 回答