标签: simplexml

有条件的SimpleXML可能吗?

我正在使用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"的文章.

我真的希望这是可能的.

感谢任何回复的人.

html php xml simplexml

0
推荐指数
1
解决办法
481
查看次数

使用SimpleXML时如何获取对象名称?

如果格式如下,其中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,即使我有有效值.如何获取对象的名称?

php simplexml

0
推荐指数
1
解决办法
268
查看次数

simplexml + foreach + twitter带有意想不到的结果

我使用以下代码输出显示的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

我究竟做错了什么?每个人都建议的一切都没有奏效!我疯了.

php simplexml

0
推荐指数
1
解决办法
325
查看次数

带有xpath的PHP SimpleXML

我有一个小的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 …

php xpath simplexml

0
推荐指数
1
解决办法
1031
查看次数

SimpleXML抛出警告 - 如何捕获?

我在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)

php xml simplexml

0
推荐指数
1
解决办法
8303
查看次数

读取xml文件并将其内容加载到数组中

我需要读取xml文件并将其内容加载到数组中.最简单的方法是什么?

$xml = json_decode(json_encode((array) simplexml_load_file("./test.xml")), 1);
print_r $xml;
Run Code Online (Sandbox Code Playgroud)

php simplexml

0
推荐指数
1
解决办法
2万
查看次数

查找具有属性的元素 - SimpleXML xpath

我正在尝试从我的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()"

有什么不对的吗?

php xml xpath simplexml

0
推荐指数
1
解决办法
1万
查看次数

如何使用php simpleXML获取多个XML元素属性

我有这个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()

有任何想法吗?谢谢.

php xml simplexml

0
推荐指数
1
解决办法
3602
查看次数

simplexml读取封闭的html标记

如何使用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)

php xml rss simplexml

0
推荐指数
1
解决办法
1616
查看次数

当返回数据时,PHP SimpleXML xpath不保留名称空间

我试图注册一个名称空间,但是每次使用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对象中。

php xpath simplexml

0
推荐指数
1
解决办法
3744
查看次数

标签 统计

php ×10

simplexml ×10

xml ×5

xpath ×3

html ×1

rss ×1