MySql查询检索xml元素属性的值

时间:2015-03-30 09:47:25

标签: php mysql xml

我有mysql表(比如TestSuite),在TestSuiteDefinition列中保存xml内容(尽管是长文本),

 <test_suite id="368">
   <name>TestSuite1</name>
   <description>TestSuite</description>
   <test_case id="141" version="" />
   <test_case id="142" version="" />
   <test_case id="143" version="" />
   <test_case id="144" version="" />
</test_suite>

现在,我想检索属性的值(在这种情况下为“id”)。我知道如何在MS SQL中执行此操作,例如:

SELECT TestSuiteDefinition.query('data(/ test_suite / test_case / @ id)')名称FROM TestSuite WHERE TestSuiteId ='368'

但是无法在MySQL中弄明白。 注意:尝试MySQL函数ExtractValue()但检索元素属性没有成功。 感谢

2 个答案:

答案 0 :(得分:2)

$rows = $mysqli->query(<<<EOQ
    SELECT ExtractValue(TestSuiteDefinition,'//test_case/@id') as name
    FROM   TestSuite
    WHERE  TestCaseId=368
EOQ
) or die($mysqli->error);

print_r($rows->fetch_all());

输出:

Array
(
    [0] => Array
        (
            [0] => 141 142 143 144
        )

)

答案 1 :(得分:1)

我没有测试过这个,但试一试

选择ExtractValue(TestSuiteDefinition,'/ test_case [1] / @id')作为名称FROM TestSuite WHERE TestCaseId ='''368“

这将让你第一个回来。您需要进行多次ExtractValue调用以获取每个属性我认为