我有这样的事情:
$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) 我在访问@attributeSimpleXML对象的部分时遇到问题.当我var_dump整个对象,我得到正确的输出,当我var_dump对象的其余部分(嵌套标签),我得到正确的输出,但当我按照文档var_dump $xml->OFFICE->{'@attributes'},我得到一个空对象,尽管事实上第一个var_dump清楚地表明有输出的属性.
任何人都知道我在这里做错了什么/我如何才能做到这一点?
我正在尝试使用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阅读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) 假设我有一些像这样的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对象强制转换为字符串的最佳方法是什么?
我有以下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的SimpleXML函数从头开始创建XML对象?通过函数列表,可以将现有的XML字符串导入到可以操作的对象中,但如果我只想从头开始以编程方式生成XML对象,那么最好的方法是什么?
我发现你可以使用simplexml_load_string()并传入你想要的根字符串,然后你有一个你可以通过添加子项来操作的对象......虽然这看起来像是一种黑客,因为我必须实际上,在加载之前,将一些XML硬编码到字符串中.
我已经使用DOMDocument函数完成了它,虽然它有点令人困惑,因为我不确定DOM与创建纯XML文档有什么关系......所以也许它的命名很糟糕:-)
我正在测试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)