我正在使用SimpleXML从XML文件中提取内容.
我想知道是否有可能根据节点的内容显示某个节点,例如
<article>
<title>PHP</title>
<content>yada yada yada</content>
</article>
<article>
<title>JAVASCRIPT</title>
<content>yodo yodo yodo</content>
</article>
Run Code Online (Sandbox Code Playgroud)
SimpleXML可以找到特定的标题,然后显示该标题的文章吗?
显示标题为"PHP"的文章.
我真的希望这是可能的.
感谢任何回复的人.
如果格式如下,其中c是一个对象数组,我必须通过每次迭代进行预测:
$a->b->c
Run Code Online (Sandbox Code Playgroud)
我这样做:
$z = $a->b
foreach($z as $key => $value)
echo $value['field'];
Run Code Online (Sandbox Code Playgroud)
$ key出现为null,即使我有有效值.如何获取对象的名称?
我使用以下代码输出显示的xml中的所有节点.
$cursor = "?cursor=-1"
$xml= new SimpleXmlElement($to->OAuthRequest('http://twitter.com/statuses/followers.xml?$cursor'));
foreach ($xml->xpath('/users_list/users/user') as $user) {
$id = $user->id;
$names .= $user->screen_name;
$profimg = $user->profile_image_url;
}
$next = $user->next_link;
$prev = $user->prev_link;
$pusharray = array("$names", "$next", "$prev");
Run Code Online (Sandbox Code Playgroud)
我回来的就是 Array ( [0] => [1] => [2] => )
下面是xml的一个示例
http://twitter.com/statuses/followers/barakobama.xml?cursor=-1
我究竟做错了什么?每个人都建议的一切都没有奏效!我疯了.
我有一个小的XML文件:
<wddxPacket version='1.0'>
<header/>
<data>
<struct type='coldfusion.runtime.ArgumentCollection'>
<var name='HEADLINE'>
<string>Richard Barret's Articles on Leadership and High Performance Organisations</string>
</var>
</struct>
</data>
</wddxPacket>
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用PHP SimpleXML和xpath来提取var名称HEADLINE元素中的字符串元素之间的值.此代码有效:
// Location of the XML file on the file system
$file = 'http://10.10.200.37/skins/importscript/41802.xml';
$xml = simplexml_load_file($file);
// CREATE THE ARRAYS FOR EACH XML ELEMENT NEEDED
$title = $xml->xpath('//var[@name="HEADLINE"]');
echo "<p>";
print_r($title);
echo "</p>";
Run Code Online (Sandbox Code Playgroud)
问题是它不仅返回值,还返回所有数组信息.如:
Array (
[0] => SimpleXMLElement Object (
[@attributes] => Array (
[name] => HEADLINE
)
[string] => Richard Barret's Articles on Leadership … 我在simplexml_load_string() 使用下面的代码渲染一些XML时确定正在发生的事情我遇到了一些麻烦....当我运行这段代码时,我得到的错误消息如下:
Message: simplexml_load_string() [function.simplexml-load-string]: Entity: line 94: parser error : Opening and ending tag mismatch: meta line 15 and head
Run Code Online (Sandbox Code Playgroud)
关于如何捕捉这些警告的任何想法? libxml_get_errors没有影响.
$response = simplexml_load_string($response);
var_dump($response);
if (count(libxml_get_errors()) > 0) {
print_r(libxml_get_errors());
}
if (is_object($response)) { //returns true when warnings are thrown
//process response
} else {
//record error
}
Run Code Online (Sandbox Code Playgroud) 我需要读取xml文件并将其内容加载到数组中.最简单的方法是什么?
$xml = json_decode(json_encode((array) simplexml_load_file("./test.xml")), 1);
print_r $xml;
Run Code Online (Sandbox Code Playgroud) 我正在尝试从我的xml中选择一个具有特定属性"id"的元素.这是我的xml:
<listitems>
<item id="1">
<name>item 1</name>
</item>
<item id="2">
<name>item 2</name>
</item>
<item id="3">
<name>item 3</name>
</item>
</listitems>
Run Code Online (Sandbox Code Playgroud)
这个php文件:
<?php
$simplexml = simplexml_file_load('test.xml');
$item = $simplexml->xpath('item[@id="1"]');
?>
Run Code Online (Sandbox Code Playgroud)
然后,如果我尝试,例如:
<?php $item->addchild('description','textdescription'); ?>
Run Code Online (Sandbox Code Playgroud)
我在最后一行得到这个错误:"致命错误:在非对象上调用成员函数addchild()"
有什么不对的吗?
我有这个XML
<STOREITEMS>
<CREATED value="Tue Oct 9 5:30:01 BST 2012">
<CATEGORY id="442" name="Hen And Stag Nights"></CATEGORY>
<CATEGORY id="69" name="Games"></CATEGORY>
<CATEGORY id="252" name="Love Zone"></CATEGORY>
<CATEGORY id="202" name="Spotlight Items"></CATEGORY>
</CREATED>
</STOREITEMS>
Run Code Online (Sandbox Code Playgroud)
我需要使用PHP获取Category - name属性
到目前为止,我有这个
$xml = simplexml_load_file("http://www.dropshipping.co.uk/catalog/xml_id_multi_info.xml");
foreach($xml->CATEGORY['name']->attributes() as $category)
{
echo $category;
}
Run Code Online (Sandbox Code Playgroud)
然而,这会返回致命错误:在非对象上调用成员函数attributes()
有任何想法吗?谢谢.
如何使用simplexml读取iTunes RSS中的机箱URL标签?
饲料:
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
<channel>
<item>
<itunes:subtitle> subtitle </itunes:subtitle>
<enclosure url="http://www.myWe/mySound.mp3" length="624557" type="audio/mp3"/>
</item>
</channel>
</rss>
Run Code Online (Sandbox Code Playgroud)
PHP:
foreach ($feed->channel->item as $item) {
$iTunes_item = $item->children('http://www.itunes.com/dtds/podcast-1.0.dtd');
$item_subtitle = $item->subtitle->attributes();
$item_url = $iTunes_item->enclosure->attributes('url'); // enclosure url
echo $item_subtitle;
echo $item_url;
}
Run Code Online (Sandbox Code Playgroud) 我试图注册一个名称空间,但是每次使用xpath返回的值时,我都必须一次又一次地注册相同的名称空间。
<?php
$xml= <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<extension>
<xyz:form xmlns:xyz="urn:company">
<xyz:formErrorData>
<xyz:field name="field">
<xyz:error>REQUIRED</xyz:error>
<xyz:value>username</xyz:value>
</xyz:field>
</xyz:formErrorData>
</xyz:form>
</extension>
</response>
</epp>
XML;
Run Code Online (Sandbox Code Playgroud)
解析器:
$xmlObject = simplexml_load_string(trim($xml), NULL, NULL);
$xmlObject->registerXPathNamespace('ns','urn:company');
$fields = $xmlObject->xpath("//ns:field");
foreach($fields as $field){
//PHP Warning: SimpleXMLElement::xpath(): Undefined namespace prefix in
//$errors = $field->xpath("//ns:error");
// I have to register the same namespace again so it works
$field->registerXPathNamespace('ns','urn:company');
$errors = $field->xpath("//ns:error"); // no issue
var_dump((string)current($errors));
}
?>
Run Code Online (Sandbox Code Playgroud)
请注意,我不得不在循环内再次注册名称空间,如果不这样做,我将得到以下错误:
// PHP警告:SimpleXMLElement :: xpath():...中的未定义名称空间前缀
您是否知道如何将注册的名称空间保留在xpath函数返回的simplexml对象中。