标签: simplexml

如何将数组转换为SimpleXML

如何在PHP中将数组转换为SimpleXML对象?

php xml arrays simplexml

277
推荐指数
10
解决办法
39万
查看次数

从SimpleXMLElement对象获取值

我有这样的事情:

$url = "http://ws.geonames.org/findNearbyPostalCodes?country=pl&placename=";
$url .= rawurlencode($city[$i]);

$xml = simplexml_load_file($url);
echo $url."\n";
$cityCode[] = array(
    'city' => $city[$i], 
    'lat' => $xml->code[0]->lat, 
    'lng' => $xml->code[0]->lng
);
Run Code Online (Sandbox Code Playgroud)

它应该从geonames下载XML.如果我这样做,print_r($xml)我得到:

SimpleXMLElement Object
(
    [code] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [postalcode] => 01-935
                    [name] => Warszawa
                    [countryCode] => PL
                    [lat] => 52.25
                    [lng] => 21.0
                    [adminCode1] => SimpleXMLElement Object
                        (
                        )

                    [adminName1] => Mazowieckie
                    [adminCode2] => SimpleXMLElement Object
                        (
                        )

                    [adminName2] => Warszawa
                    [adminCode3] => SimpleXMLElement Object
                        (
                        )

                    [adminName3] …
Run Code Online (Sandbox Code Playgroud)

php simplexml

189
推荐指数
5
解决办法
22万
查看次数

从SimpleXML访问@attribute

我在访问@attributeSimpleXML对象的部分时遇到问题.当我var_dump整个对象,我得到正确的输出,当我var_dump对象的其余部分(嵌套标签),我得到正确的输出,但当我按照文档var_dump $xml->OFFICE->{'@attributes'},我得到一个空对象,尽管事实上第一个var_dump清楚地表明有输出的属性.

任何人都知道我在这里做错了什么/我如何才能做到这一点?

php xml simplexml

113
推荐指数
7
解决办法
13万
查看次数

PHP simpleXML如何以格式化方式保存文件?

我正在尝试使用PHP的SimpleXML将一些数据添加到现有的XML文件中.问题是它将所有数据添加到一行中:

<name>blah</name><class>blah</class><area>blah</area> ...
Run Code Online (Sandbox Code Playgroud)

等等.全部在一条线上.如何引入换行符?

我怎么做到这样?

<name>blah</name>
<class>blah</class>
<area>blah</area>
Run Code Online (Sandbox Code Playgroud)

我正在使用asXML()功能.

谢谢.

php formatting simplexml

85
推荐指数
3
解决办法
6万
查看次数

将xml加载到php文件时,'xmlParseEntityRef:没有名称'警告

我正在使用php阅读xml simplexml_load_file.但是,在尝试加载xml时,它会显示一个警告列表

Warning: simplexml_load_file() [function.simplexml-load-file]: <project orderno="6" campaign_name="International Relief & Development" project in /home/bluecard1/public_html/test.php on line 3    
Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/bluecard1/public_html/test.php on line 3    
Warning: simplexml_load_file() [function.simplexml-load-file]: http://..../index.php/site/projects/:15: parser error : xmlParseEntityRef: no name in /home/bluecard1/public_html/test.php on line 3

Warning: simplexml_load_file() [function.simplexml-load-file]: ional Relief & Development" project_id="313" client_name="International Relief & in /home/bluecard1/public_html/test.php on line 3    
Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/bluecard1/public_html/test.php on line 3    
Warning: simplexml_load_file() [function.simplexml-load-file]: http://..../index.php/site/projects/:15: parser error : xmlParseEntityRef: no name in /home/bluecard1/public_html/test.php on …
Run Code Online (Sandbox Code Playgroud)

php xml simplexml

82
推荐指数
6
解决办法
10万
查看次数

SimpleXml到string

是否有任何函数可以从PHP生成字符串SimpleXMLElement

php xml simplexml

78
推荐指数
6
解决办法
13万
查看次数

无论上下文如何,都将SimpleXML对象强制为字符串

假设我有一些像这样的XML

<channel>
  <item>
    <title>This is title 1</title>
  </item>
</channel>
Run Code Online (Sandbox Code Playgroud)

下面的代码执行我想要的,它将标题输出为字符串

$xml = simplexml_load_string($xmlstring);
echo $xml->channel->item->title;
Run Code Online (Sandbox Code Playgroud)

这是我的问题.下面的代码不会将标题视为该上下文中的字符串,因此我最终得到的是数组中的SimpleXML对象而不是字符串.

$foo = array( $xml->channel->item->title );
Run Code Online (Sandbox Code Playgroud)

我一直在这样做

$foo = array( sprintf("%s",$xml->channel->item->title) );
Run Code Online (Sandbox Code Playgroud)

但这看起来很难看.

无论上下文如何,将SimpleXML对象强制转换为字符串的最佳方法是什么?

php xml simplexml

75
推荐指数
3
解决办法
8万
查看次数

如何在PHP中使用XMLReader?

我有以下XML文件,文件相当大,我无法让simplexml打开并读取文件所以我正在尝试XMLReader没有成功的PHP

<?xml version="1.0" encoding="ISO-8859-1"?>
<products>
    <last_updated>2009-11-30 13:52:40</last_updated>
    <product>
        <element_1>foo</element_1>
        <element_2>foo</element_2>
        <element_3>foo</element_3>
        <element_4>foo</element_4>
    </product>
    <product>
        <element_1>bar</element_1>
        <element_2>bar</element_2>
        <element_3>bar</element_3>
        <element_4>bar</element_4>
    </product>
</products>
Run Code Online (Sandbox Code Playgroud)

遗憾的是,我没有为PHP找到一个很好的教程,我很想知道如何将每个元素内容存储在数据库中.

php xml parsing xmlreader simplexml

74
推荐指数
4
解决办法
12万
查看次数

使用SimpleXML从头开始创建XML对象

是否可以使用PHP的SimpleXML函数从头开始创建XML对象?通过函数列表,可以将现有的XML字符串导入到可以操作的对象中,但如果我只想从头开始以编程方式生成XML对象,那么最好的方法是什么?

我发现你可以使用simplexml_load_string()并传入你想要的根字符串,然后你有一个你可以通过添加子项来操作的对象......虽然这看起来像是一种黑客,因为我必须实际上,在加载之前,将一些XML硬编码到字符串中.

我已经使用DOMDocument函数完成了它,虽然它有点令人困惑,因为我不确定DOM与创建纯XML文档有什么关系......所以也许它的命名很糟糕:-)

php xml simplexml

73
推荐指数
3
解决办法
12万
查看次数

PHP 7 simpleXML

我正在测试PHP7,并在最近的更新后出现了一个奇怪的问题.默认情况下应该启用SimpleXML,我的phpinfo页面显示它可用:

在此输入图像描述

但是,这些功能不可用:

<?php

if (function_exists('simplexml_load_file')) {
    echo "simpleXML functions are available.<br />\n";
} else {
    echo "simpleXML functions are not available.<br />\n";
}

// result-- NOT available
Run Code Online (Sandbox Code Playgroud)

并且该模块未列为已加载:

~ $ php -m
[PHP Modules]
calendar
Core
ctype
curl
...
Reflection
session
shmop
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
Zend OPcache
zlib
Run Code Online (Sandbox Code Playgroud)

任何人都知道这是否有解决方法?

版本信息:

~ $ php -v
PHP 7.0.3-8+deb.sury.org~trusty+2 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies …
Run Code Online (Sandbox Code Playgroud)

php simplexml php-7

63
推荐指数
8
解决办法
13万
查看次数

标签 统计

php ×10

simplexml ×10

xml ×7

arrays ×1

formatting ×1

parsing ×1

php-7 ×1

xmlreader ×1