标签: simplexml

从PHP SimpleXML节点获取实际值

$value = $simpleXmlDoc->SomeNode->InnerNode;
Run Code Online (Sandbox Code Playgroud)

实际上将一个simplexml对象赋给$ value而不是InnerNode的实际值.

如果我做:

$value = $simpleXmlDoc->SomeNode->InnerNode . "\n";
Run Code Online (Sandbox Code Playgroud)

我得到了价值.无论如何获得实际价值而没有笨拙的样子. "\n"

php simplexml

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

如何将更改后的SimpleXML对象保存回文件?

所以,我有这个代码在我的XML文件中搜索特定节点,取消设置现有节点并插入具有正确数据的全新子节点.有没有办法使用simpleXML将这些新数据保存在实际的XML文件中?如果没有,还有另一种有效的方法吗?

public function hint_insert() {

    foreach($this->hints as $key => $value) {

        $filename = $this->get_qid_filename($key);

        echo "$key - $filename - $value[0]<br>";

        //insert hint within right node using simplexml
        $xml = simplexml_load_file($filename);

        foreach ($xml->PrintQuestion as $PrintQuestion) {

            unset($xml->PrintQuestion->content->multichoice->feedback->hint->Passage);

            $xml->PrintQuestion->content->multichoice->feedback->hint->addChild('Passage', $value[0]);

            echo("<pre>" . print_r($PrintQuestion) . "</pre>");
            return;

        }

    }

}
Run Code Online (Sandbox Code Playgroud)

php xml simplexml

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

SimpleXML:选择具有特定属性值的元素

在XML文档中,我有共享相同名称的元素,但属性的值定义了它的数据类型,我想从文档中选择所有具有特定值的元素.我是否需要使用XPath(如果是这样,您能建议正确的语法)还是有更优雅的解决方案?

这是一些XML示例:

<object>
  <data type="me">myname</data>
  <data type="you">yourname</data>
  <data type="me">myothername</data>
</object>
Run Code Online (Sandbox Code Playgroud)

我想选择所有类型的<data>孩子的内容.<object>me

PS - 我正在尝试使用PHP与Netflix API进行交互 - 这对我的问题无关紧要,但如果你想提出一个好的/更好的方法,我会全力以赴.

php xml xpath simplexml netflix

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

用于使用标记名称中的冒号解析XML的PHP​​库?

我一直在尝试使用SimpleXML,但似乎不喜欢XML看起来像这样:

<xhtml:div>sample <xhtml:em>italic</xhtml:em> text</xhtml:div>
Run Code Online (Sandbox Code Playgroud)

那么什么库会处理看起来像这样的标签(在它们中有冒号)?

php xml namespaces simplexml

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

XML解析器错误:未定义实体

我已经在这个问题上搜索了stackoverflow,并找到了一些主题,但我觉得在这方面我没有真正的答案.

我有一个用户提交的表单,字段的值存储在XML文件中.XML设置为使用UTF-8编码.

用户将不时地从某处复制/粘贴文本,当我得到"实体未定义错误"时.

我意识到XML只支持少数几个实体,除此之外的任何东西都无法识别 - 因此解析器错误.

从我收集的内容中,我看到了一些选项:

  1. 我可以找到并替换所有&nbsp;并将它们与&#32;实际空间交换出来.
  2. 我可以将代码放在CDATA部分中.
  3. 我可以在XML文件中包含这些实体.

我正在对XML文件做的是,用户可以将内容输入到表单中,将其存储在XML文件中,然后该内容在Web页面上显示为XHTML(使用SimpleXML解析).

在我不了解的三个选项或任何其他选项中,处理这些实体的最佳方法是什么?

谢谢,瑞恩

UPDATE

我要感谢大家的好评.我确实确定了导致我的实体错误的原因.所有的建议让我更深入地研究它!

一些文本框中有普通的旧文本框,但我的textareas使用TinyMCE进行了增强.事实证明,在仔细观察的同时,PHP警告总是引用来自TinyMCE增强型textareas的数据.后来我注意到在PC上所有角色都被取出了(因为它无法读取它们),但是在MAC上你可以看到引用该角色的unicode号的小方框.它首先出现在MAC上的正方形中的原因是因为我使用utf8_encode来编码不是UTF的数据以防止其他解析错误(这在某种程度上也与TinyMCE有关).

所有这些的解决方案非常简单:

entity_encoding : "utf-8"在tinyMCE.init中添加了这一行.现在,所有角色都以他们应该的方式出现.

我想我唯一不理解的是为什么当放置在文本框中时字符仍然显示,因为没有任何东西将它们转换为UTF,但是使用TinyMCE这是一个问题.

php xml entity tinymce simplexml

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

在PHP中处理大型XML的最佳方法

我必须解析php中的大型XML文件,其中一个是6.5 MB,它们甚至可能更大.正如我所读到的SimpleXML扩展,将整个文件加载到一个对象中,这可能效率不高.根据您的经验,最好的方法是什么?

php xml parsing simplexml large-files

27
推荐指数
4
解决办法
5万
查看次数

PHP - SimpleXML - AddChild与另一个SimpleXMLElement

我正在尝试构建一个相当复杂的XML文档.

我有一堆重复的XML文档部分.我以为我会使用多个字符串模板作为节的基础文档,并使用simplexml_load_string创建XML元素的实例.

所以我有一个SimpleXMLElement实例作为基础文档

$ root = simplexml_load_string($ template_root);

然后我遍历我的数据库中的一些项目,创建新的SimpleXMLElement,如下所示:

for(bla bla bla):

$ item = simplexml_load_string($ template_item); //用项目做的东西//尝试将项目添加到根文档中
//被困在这里..不能做$ root-> items-> addChild($ item)

ENDFOR;

我不能调用addChild,因为它只需要一个标签名称和值..你不能addChild另一个SimpleXMLElement.

我在这里错过了什么吗?看起来真的很蠢,addChild不能将SimpleXMLELement作为参数.

有没有其他方法可以做到这一点?(除了使用不同的xml库)

php simplexml

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

SimpleXml如何正确设置编码和xmins?

关于我如何通过以下方式启动PHPs SimplXMLElement的任何想法?

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
Run Code Online (Sandbox Code Playgroud)

然后主根将是:

<Document></Document>
Run Code Online (Sandbox Code Playgroud)

或者我使用simplexml_load_string()来设置它?

上下文:我正在扩展simpleXmlElement来创建一些kml文件.

编辑

实际上,设置kml xmlns很容易做到:

new simpleXMLElement('<kml xmlns="http://earth.google.com/kml/2.2">
<Document></Document></kml>');
Run Code Online (Sandbox Code Playgroud)

如何设置编码="UTF-8"困扰我,似乎没有它可以接受kml,但我仍然想知道如果pos这样做怎么做.

php xml encoding simplexml

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

simplexml错误处理php

我使用以下代码:

function GetTwitterAvatar($username){
$xml = simplexml_load_file("http://twitter.com/users/".$username.".xml");
$imgurl = $xml->profile_image_url;
return $imgurl;
}

function GetTwitterAPILimit($username, $password){
$xml = simplexml_load_file("http://$username:$password@twitter.com/account/rate_limit_status.xml");
$left = $xml->{"remaining-hits"};
$total = $xml->{"hourly-limit"};
return $left."/".$total;
}
Run Code Online (Sandbox Code Playgroud)

并在流无法连接时收到这些错误:

Warning: simplexml_load_file(http://twitter.com/users/****.xml) [function.simplexml-load-file]: failed to open stream: HTTP request failed! HTTP/1.0 503 Service Unavailable

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://twitter.com/users/****.xml" 

Warning: simplexml_load_file(http://...@twitter.com/account/rate_limit_status.xml) [function.simplexml-load-file]: failed to open stream: HTTP request failed! HTTP/1.0 503 Service Unavailable

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://***:***@twitter.com/account/rate_limit_status.xml" …
Run Code Online (Sandbox Code Playgroud)

php xml simplexml

23
推荐指数
4
解决办法
5万
查看次数

从SimpleXMLObject到Array的递归转换

我需要以递归方式将PHP SimpleXMLObject强制转换为数组.问题是每个子元素也是PHP SimpleXMLElement.

这可能吗?

php casting simplexml

22
推荐指数
2
解决办法
8578
查看次数

标签 统计

php ×10

simplexml ×10

xml ×7

casting ×1

encoding ×1

entity ×1

large-files ×1

namespaces ×1

netflix ×1

parsing ×1

tinymce ×1

xpath ×1