您好我有一个xml片段,我想在Laravel中使用Orchestral XMLParser进行解析。
<?xml version="1.0" encoding="UTF-8"?>
<course code="ABC">
<title lang="sv">Utmattning</title>
<title lang="en">Fatigue</title>
</course>
以下代码用于尝试解析它
$file = file_get_contents('file.xml');
$xml = XmlParser::extract($file);
$array = $xml->parse([
'code' => ['uses' => '::code'],
'title' => ['uses' => 'title[::lang>locale, value>name]'],
)];
这就是我得到的
[
[code] => ABC
[title] =>
[
[locale] => sv
[name] =>
],
[
[locale] => en
[name] =>
]
]
但我想得到
[
[code] => ABC
[title] =>
[
[locale] => sv
[name] => Utmattning
],
[
[locale] => en
[name] => Fatigure
]
]
如何替换“value”以获取元素标题的内部文本?
答案 0 :(得分:0)
尝试title[::lang=@]
请参阅https://github.com/laravie/parser/blob/master/tests/Xml/DocumentTest.php#L331-L356
当您执行value>name
时,预计会<title><value>Content</value></title>
答案 1 :(得分:0)
我通过在结构中添加一个名为“!”的新运算符来解决问题。它获取活动元素的内部文本。
https://github.com/laravie/parser/pull/15
也许不是最干净的解决方案,但它有效:)