- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试比较两个 SimpleXML 对象
。
一个是从数据库中获取的,另一个是从 XML API 中获取的,但无论 XML 实际上是否相同,结果始终为假。
我做错了什么?
$objDbXml = simplexml_load_string($objReisen->xml); // XML from DB
$objApiXml = simplexml_load_string(getXMlFromApi()); // XML from Api
var_dump($objDbXml->Reise->Z_LEISTUNGEN == $objApiXml->Reise->Z_LEISTUNGEN);
// Result is always false
var_dump($objDbXml->Reise->Z_LEISTUNGEN , $objApiXml->Reise->Z_LEISTUNGEN) 的输出:
object(SimpleXMLElement) #69 (1) {
["TextLine"]= > array(11) {
[0] = > string(43) "Erlebnisreise mit höchstens 13 Teilnehmern"
[1] = > string(39) "Durchführungsgarantie ab 4 Teilnehmern"
[2] = > string(127) "Linienflug mit South African Airways von Frankfurt a.M. nach Kapstadt und zurück von Port Elizabeth (von München auf Anfrage)"
[3] = > string(28) "Reiseminibus mit Klimaanlage"
[4] = > string(111) "Übernachtungen in Hotels und Lodges sowie 2 Übernachtungen in einer exklusiven Lodge im Kariega Game Reserve"
[5] = > string(67) "Täglich Frühstück, 2 x Mittagessen, 4 x Abendessen, 1 Weinprobe"
[6] = > string(123) "1 Safari im Addo-Elephant-NP; 2 Safaris im offenen Geländewagen, 1 Wandersafari und 1 Bootsfahrt im Kariega Game Reserve"
[7] = > string(41) "Nationalparkgebühren und Eintrittsgelder"
[8] = > string(14) "Reiseliteratur"
[9] = > string(43) "Zertifikat über 100 m² Regenwald für Sie"
[10] = > string(42) "Deutsch sprechende Chamäleon-Reiseleitung"
}
}
object(SimpleXMLElement) #67 (1) {
["TextLine"]= > array(11)
{
[0] = > string(43) "Erlebnisreise mit höchstens 12 Teilnehmern"
[1] = > string(39) "Durchführungsgarantie ab 4 Teilnehmern"
[2] = > string(127) "Linienflug mit South African Airways von Frankfurt a.M. nach Kapstadt und zurück von Port Elizabeth (von München auf Anfrage)"
[3] = > string(28) "Reiseminibus mit Klimaanlage"
[4] = > string(111) "Übernachtungen in Hotels und Lodges sowie 2 Übernachtungen in einer exklusiven Lodge im Kariega Game Reserve"
[5] = > string(67) "Täglich Frühstück, 2 x Mittagessen, 4 x Abendessen, 1 Weinprobe"
[6] = > string(123) "1 Safari im Addo-Elephant-NP; 2 Safaris im offenen Geländewagen, 1 Wandersafari und 1 Bootsfahrt im Kariega Game Reserve"
[7] = > string(41) "Nationalparkgebühren und Eintrittsgelder"
[8] = > string(14) "Reiseliteratur"
[9] = > string(43) "Zertifikat über 100 m² Regenwald für Sie"
[10] = > string(42) "Deutsch sprechende Chamäleon-Reiseleitung"
}
}
最佳答案
与 SimpleXML 一样,这里的问题在于 SimpleXMLElement 不是“普通”PHP 对象。 SimpleXML 不是一个解析器,它吐出具有属性和方法的完整形式的 PHP 对象,而是一个链接到 XML 文档的内部表示的“实时”API。
Comparing Objects 上的手册页声明“如果两个对象实例具有相同的属性和值,并且是同一类的实例,则它们是相等的”。当您在 SimpleXMLElement 上运行 print_r()
或 var_dump()
时,它似乎具有代表子节点和属性的属性,这将是对于从相同的 XML 构建的两个对象相同。但是,实际 实现仅包含一个指向在解析 XML 时创建的内存结构的指针,即使您两次解析相同的字符串,它也会有所不同。因此,简单地将两个 SimpleXMLElement 对象与 ==
进行比较将永远不会返回 true
。
实际的解决方案取决于您要比较的内容:
->asXML()
来获取文档该部分的 XML 字符串;例如$objDbXml->Reise->Z_LEISTUNGEN->asXML() == $objApiXml->Reise->Z_LEISTUNGEN->asXML()
关于php - 比较 SimpleXml 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17935118/
这里发生了什么事? $string = XML; $xml = simplexml_load_string($string); // $xmlobj = sim
当我将 SimpleXML 解析为对象数组的一部分的字符串时,我一直坚持让 SimpleXML 返回一个对象。 $a = '1145869290false43false'; $resultA = si
我有两个 SimpleXML 对象。如何将一个对象添加为另一个对象的子元素。 请注意,这不能通过 addChild 方法完成,因为它会在添加之前将给定值转换为字符串。 最佳答案 我发现 SimpleX
http://pastie.org/1701923这是从我查询邮政编码的 API 返回的 XML。 我想从每个条目中提取数据,然后直接对其进行循环或将其放入我可以循环的数组中。我似乎无法正确处理。这是
这个问题在这里已经有了答案: remove xml version tag when a xml is created in php (10 个答案) 关闭 7 年前。 我使用 SimpleXML
与 DOM 或 Expat 解析器相比,SimpleXML 仅仅用几行代码就可以从 XML 元素中读取文本数据。 SimpleXML 可把 XML 文档(或 XML 字符串)转换为对象,比如:
我有一些看起来像这样的 XML: true 42 ;jsessionid=42 SimpleXML 以这种方式解析它: $obj
我有一个具有命名空间属性的 XML 文档。 XML 看起来像: 我如何提取 and
我想从元素id的属性创建一个数组,但是以下代码返回所有XML。 PHP文件: $xmlfile=simplexml_load_file("test.xml"); $test=$xmlfile->xpa
我有一个看起来像这样的XML结构: 0 Some survey question Answer 1 0 Answ
我正在尝试访问具有命名空间声明的节点中没有命名空间声明的节点列表。我的 XML 文件有一个带有命名空间 ehd 的主节点,在同一命名空间内有两个子节点 header、body。但是,主体节点内的所有子
我正在使用 SimpleXML 和 XPath 尝试获取子节点('IndexEntry)属性('indexKey')的值。节点的命名空间,我已在另一个节点(“记录”)上成功测试。由于某种原因,该节点的
我有两棵 XML 树,想将一棵树作为叶子添加到另一棵树上。 显然: $tree2->addChild('leaf', $tree1); 不起作用,因为它仅复制第一个根节点。 好吧,所以我想我应该遍历整
我正在使用 SimpleXML http://simple.sourceforge.net/home.php 在我的 Android 应用程序中, 我从 API 获取数据如下:
我想使用 SimpleXML 读取并解析包含员工信息的 XML 文件。框架。这是我的 XML 文件: 29 Pankaj
我正在尝试在 android 中使用 simplexml 解析此 xml 字符串: " " 是的,我知道门标签应该立即关闭,而不是在声明所有门标签后关闭,我无法控制这个
我有一个具有这种结构的 XML 文件:
请,我需要解析包含汽车信息的 XML 文件。我在汽车、照片中完成了所有操作,但我需要在额外的表中包含 id、汽车表 id 的外键,并且所有汽车都有随机的 Equipment_id。 我需要将其放入“设
我有一个看起来像这样的 xml: 在 xml 映射 java 代码中我有这样的东西: public class A { @Element(required=false)
我有一个xml文档如下: Calculations Description First Description Alan
我是一名优秀的程序员,十分优秀!