标签: simplexml

使用php和simplexml重新排序XML节点

我的页面当前正在更新现有的xml,问题是当它添加新节点时,它们会转到xml或父标记的末尾,即:

<N1></N1>
<N1></N1>
<N2></N2>
<N2></N2>
<N2></N2>
<N1></N1>  //I want this node to be displayed with the other N1 nodes.
Run Code Online (Sandbox Code Playgroud)

我已经阅读了不使用simplexml的解决方案,但问题是我已经写了很多关于simplexml的代码来改变现在.另外,请记住,页面不是从头开始重写xml,而是简单地改变不同的内容.那是我要问的可能吗?谢谢.

php xml simplexml nodes

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

PHP XML库不返回XPath结果

我试图使用PHP和XPath从这个XML中获取 ID元素为1364的所有Category节点:http://education.oracle.co.uk/html/oracle/28US/schedule.xml

我的代码目前看起来像这样:

$schedule = new SimpleXMLElement("schedule.xml", null, true);
$nodes = $schedule->xpath("//category[id=1364]");
if(!$nodes) {
    echo "No xpath results.";
} else {
    echo count($nodes)." results.";
}
Run Code Online (Sandbox Code Playgroud)

XPath不返回任何结果.我已使用其他XPath查询程序检查了查询,并返回了结果.

上面的代码使用SimpleXML,但是在使用DOMDocument时我遇到了完全相同的问题.在SimpleXML和DOMDocument中,运行XPath"//*"都有效,返回文档中的所有节点.

谢谢!

php xml xpath simplexml domdocument

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

PHP将XML转换为数组

我试图找到一种方法将任何xml feed转换为关联数组,我注意到很多其他人都在寻找相同的东西,并且有很多尝试,其中一些已经失败,我发现了以下方法,信用去

http://gaarf.info/2009/08/13/xml-string-to-php-array/

我略微改变了代码,这是结果.

    function xmlNameSpaceToArray(SimpleXmlIterator $xml, $nameSpaces=Null){
      $output = Null;
      $preparedArray = array();
      for($xml->rewind(); $xml->valid(); $xml->next()) {
        $key = $xml->key();
        if(!isset($preparedArray[$key])) { $preparedArray[$key] = array(); $i=0; }
        else $i = count($preparedArray[$key]);
        $simple = true;
        foreach($xml->current()->attributes() as $k=>$v) {
            $preparedArray[$key][$i][$k]=(string)$v;
            $simple = false;
        }
        if($nameSpaces) foreach($nameSpaces as $nid=>$name) {
          foreach($xml->current()->attributes($name) as $k=>$v) {
             $preparedArray[$key][$i][$nid.':'.$k]=(string)$v;
             $simple = false;
          }
        } 
        if($xml->hasChildren()) {
            if($simple) $preparedArray[$key][$i] = xmlNameSpaceToArray($xml->current(), $nameSpaces);
            else $preparedArray[$key][$i]['content'] = xmlNameSpaceToArray($xml->current(), $nameSpaces);
        } else {
            if($simple) $preparedArray[$key][$i] = strval($xml->current());
            else $preparedArray[$key][$i]['content'] …
Run Code Online (Sandbox Code Playgroud)

php xml parsing simplexml

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

simplexml编码问题

我不确定这是一个编码问题还是什么,但我有一个问题,使用简单的xml与文本中的一些字符

$xml = <<<HOHOHO
<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?>
<videos>
    <video>
    <ContentProvider>bl abla</ContentProvider>
    <ArtistName>T-Boz</ArtistName>
    <CopyrightLine>(C)2009 SME Espa&#xF1;a, S.</CopyrightLine>
    </video>
</videos>
HOHOHO;

$a = simplexml_load_string ($xml);

foreach ( $a->video as $new ) 
    die($new->CopyrightLine);
Run Code Online (Sandbox Code Playgroud)

事情就是ñ角色变得混乱,变成类似Ă的东西,当它应该是一个ñ.我觉得奇怪的是,simplexml无论如何都要将它更改为一个角色,而不仅仅是保持原样......

我知道这必须用十六进制代码做一些事情,但我还没有找到解决方案

到目前为止我尝试过的事情:使用mb_convert_string将字符串转换为iso-8859-2,使用mb_convert_string将字符串转换为utf-8,使用html_entity_decode进行转换,使用html_special字符进行转换

以上所有尝试都无法解析xml或只是没有修复该字符

帮助我非常感谢!

php xml encoding simplexml

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

echo simplexml对象

这个问题有两个部分.

第1部分.昨天我有一些代码可以从RSS提要中回显XML的全部内容.然后我从我的php文档中删除它,保存在它上面,我完全在踢自己.

我相信语法是这样的:

$xml = simplexml_load_file($url);
echo $xml;
Run Code Online (Sandbox Code Playgroud)

我再次尝试了它并且它不起作用,所以显然我忘记了正确的语法并且可以使用你的帮助,亲爱的stackoverflow问题回答者.

我一直想弄清楚我在做什么,我无法在Google或PHP网站上找到一个例子.我试过print_r($ url); 命令,它给了我一个似乎是源的雾化版本.我想要整个弦乐,疣和所有.我意识到我可以在窗口中输入RSS链接并查看它,但是当我编码和编码时,将它放在我的PHP页面上会很有帮助.

第2部分我想重建这个的主要原因是因为我试图从博客RSS解析节点,以便在私有域上托管的网页上显示它.我发布了一个虚拟博客,当我没有为其中一个虚拟帖子添加标题时发现了一个尴尬的格式化故障.

那么在这种情况下做什么呢?我试了一下:

if(entry->title == "")
{$entryTitle = "untitled";}
Run Code Online (Sandbox Code Playgroud)

那根本不起作用.

这是我处理博客的完整PHP脚本:

<?php
/*create variables*/
$subtitle ="";
$entryTitle="";
$html = "";
$pubDate ="";
/*Store RSS feed address in new variable*/
$url = "http://www.blogger.com/feeds/6552111825067891333/posts/default";
/*Retrieve BLOG XML and store it in PHP object*/
$xml = simplexml_load_file($url);
print_r($xml);
/*Parse blog subtitle into HTML and echo it on the page*/
$subtitle .= "<h2 class='blog'>" . $xml->subtitle . "</h2><br />";
echo $subtitle; …
Run Code Online (Sandbox Code Playgroud)

html php rss blogger simplexml

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

什么php/server设置可能阻止simplexml_load_file()工作?

我正在使用simplexml_load_file()抓取RSS提要的内容:

$rss = simplexml_load_file('http://www.iolproperty.co.za/roller/news/feed/entries/rss');
Run Code Online (Sandbox Code Playgroud)

这在我的本地服务器上按预期工作,但在部署到我的客户端的生产服务器时静默失败,返回空结果.

phpinfo()函数说启用了SimpleXML支持,似乎我可以访问远程文件(cURL函数工作得很好).我也试过加载不同的RSS源.同样,它们在本地工作但在部署时返回空.

php simplexml

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

SimpleXML删除节点

我有一个只运行一次的foreach循环,它让我难过.

1:我加载了一系列状态值("请求","删除"或"已购买")

2:然后我加载一个xml文件,需要循环"代码"节点并更新它们的状态,但是如果新代码是"删除"我想删除它然后转移到下一个

XML结构是......

<content>
.... lots of stuff
<codes>
<code date="xxx" status="request">xxxxx</code>
.. repeat ...
</codes>
</content>
Run Code Online (Sandbox Code Playgroud)

和PHP代码是......

$newstatus = $_POST['updates'];
$file = '../apps/templates/'.$folder.'/layout.xml';
$xml2 = simplexml_load_file($file);
foreach($xml2->codes->code as $code){
    if($code['status'] == "delete") {
        $dom=dom_import_simplexml($code);
        $dom->parentNode->removeChild($dom);
    }
}
$xml2->asXml($file);
Run Code Online (Sandbox Code Playgroud)

我暂时删除了更新,因此我可以调试删除检查.这一切都有效,但它只删除第一个删除并留下所有其他删除,即使它是一个foreach循环?任何帮助非常感谢.

php xml simplexml

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

从Tumblr检索帖子

我已经尝试过关于这个主题的研究,但是我做的越多,我得到的就越混乱 - 似乎Tumblr的API上的文档到处都是(并且过时了?); 所以也许有人会对我有一些建议.

我所要做的就是抓住我最近的Tumblr帖子并将其显示在我网站的主页上; 没什么太花哨的.我不需要POST到tumblr,我只需要信息; 我的想法是,我正在与之合作的团队希望将Tumblr用作一种穷人的CMS,同时保持他们在Tumblr网站上的存在.

我可以使用PHP和SimpleXML(http://username.tumblr.com/api/read)轻松检索帖子- 但这不会在简单的文本帖子之外提供太多支持(其他内容,如视频,照片等等 - 发布不同); 它看起来并不像是一个官方支持的访问tumblr数据的方法(或者它可能是?).Tumblr本身指向人们对tumblr.php,但我对我的生活无法弄清楚如何设置它,因为没有真正的文档可供刚刚开始涉猎的人.StackOverflow上的一些帖子说Tumblr.php不再起作用了,并指出人们对tumblrOauth.php,但我遇到了同样的问题.没有真正的'新API'文档.我知道如何在Tumblr中设置我的'app' - 我只是不知道所有Github文件(对于这两个系统)如何相互通信/页面...

有人有什么建议吗?我只是在寻找正确方向上的一点,也许是对如何勾选这些位的初步推动?

非常感谢电子朋友!

php api simplexml tumblr

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

In_array无法正常工作

我有一个数组,我应用in_array函数来查找该数组中的特定数字,但它显示没有结果,数据在数组内但没有响应.. :(

阵:

 Array
(
[0] => SimpleXMLElement Object
    (
        [0] => 572140
    )

[1] => SimpleXMLElement Object
    (
        [0] => 533167
    )

[2] => SimpleXMLElement Object
    (
        [0] => 572070
    )

[3] => SimpleXMLElement Object
    (
        [0] => 572383
    )

[4] => SimpleXMLElement Object
    (
        [0] => 285078
    )

[5] => SimpleXMLElement Object
    (
        [0] => 430634
    )
}
Run Code Online (Sandbox Code Playgroud)

我正在使用的代码:

 if(in_array('285078',$arr))
    {
        echo 'yes';
    }
    else
    {
       echo "No";
    }
Run Code Online (Sandbox Code Playgroud)

这是我从xml文件创建的数组..

 $arr = array();
 foreach($xmlInjury as $data)
 {
  array_push($arr,$data->player_id); …
Run Code Online (Sandbox Code Playgroud)

php xml arrays simplexml

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

PHP simplexml_load_file大小写返回false

我为我的PHP应用程序使用phpunit(100%覆盖率)进行单元测试,我有这个:

$xml = simplexml_load_string($soapResponse); 
if (false === $xml) {
    throw new \Exception('invalid XML'); 
}
Run Code Online (Sandbox Code Playgroud)

我找不到带有simplexml_load_stringreturn 的测试用例false

如果您有解决方案...谢谢

php phpunit simplexml simplexml-load-string

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