使用以下命令读取 XML 节点:
我有一个提要,但我想要检索的值的项目中有一个 :
。我该怎么办?
供稿:http://publishers.spilgames .com/rss?lang=en-US&tsize=1&format=xml&limit=100
foreach($xml->entry as $game) {
$it = $it+1;
$name = mysql_real_escape_string($game->title);
$link = $game->link[href];
$description = mysql_real_escape_string($game->media:description);
I have a feed but there's a :
in the item of who's value I want to retrieve. What do I do?
Feed: http://publishers.spilgames.com/rss?lang=en-US&tsize=1&format=xml&limit=100
foreach($xml->entry as $game) {
$it = $it+1;
$name = mysql_real_escape_string($game->title);
$link = $game->link[href];
$description = mysql_real_escape_string($game->media:description);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将字符串包裹在
{}
中:请参阅:字符串:复杂(卷曲)语法和可变变量
Wrap the string in
{}
:See: Strings: Complex (curly) syntax and Variable variables
这就是所谓的 xml 命名空间的前缀。 查看此命名空间教程。
您实际上并不匹配前缀,而是匹配前缀代表的命名空间。
如何执行此操作完全取决于您用来操作 xml 的内容。你没有说你正在使用什么,但我猜你正在使用 SimpleXML。
对于 SimpleXML,默认情况下只有没有命名空间的节点才会包含在对象访问树中。要获取命名空间元素,您需要显式地请求它们:
虽然在这种特殊情况下它可能不是最佳选择,但您也可以使用 XPath 更直接地匹配命名空间节点:
这是一个更完整的示例,它也稍微修饰了您的代码。
This is what is called a prefix for an xml namespace. See this namespace tutorial.
You don't actually match on the prefix, you match on the namespace the prefix stands for.
How you do this is entirely dependent on what you are using to manipulate the xml. You don't say what you are using, but I will guess you are using SimpleXML.
With SimpleXML, by default only nodes with no namespace are included in the object-access tree. To get namespaced elements, you need to explicitly ask for them:
Although it's probably not the best choice in this particular case, you can also use XPath to match namespaced nodes more directly:
Here's a more complete example which also spruces up your code a bit.