Php 从simpleXML数组中获取元素

Php 从simpleXML数组中获取元素,php,arrays,simplexml,Php,Arrays,Simplexml,我试图从simpleXML数组中获取元素,但由于某些原因,我无法调用它们 这是数组 Array ( [0] => SimpleXMLElement Object ( [NameChangeIndicator] => N [NameChangeDate] => SimpleXMLElement Object ( ) [P

我试图从simpleXML数组中获取元素,但由于某些原因,我无法调用它们

这是数组

Array
(
    [0] => SimpleXMLElement Object
        (
            [NameChangeIndicator] => N
            [NameChangeDate] => SimpleXMLElement Object
                (
                )

            [PreviousName] => SimpleXMLElement Object
                (
                )

            [Score] => 53
            [NumberOfSubs] => SimpleXMLElement Object
                (
                )

            [NumberOfJU] => SimpleXMLElement Object
                (
                )

            [DateLastJU] => SimpleXMLElement Object
                (
                )

            [NumberActPrincipals] => 1
            [NumberActPrincipalsJU] => SimpleXMLElement Object
                (
                )

            [LastestBankCode] => SimpleXMLElement Object
                (
                )

            [LastestBankCodeDate] => SimpleXMLElement Object
                (
                )

            [NumberRDs] => SimpleXMLElement Object
                (
                )

            [LiqIndicator] => SimpleXMLElement Object
                (
                )

            [TotEnqLast12Mth] => SimpleXMLElement Object
                (
                )

            [TotEnqLast3Mth] => SimpleXMLElement Object
                (
                )

            [RefsNoOfReferences] => SimpleXMLElement Object
                (
                )

            [RefsHighMthPurchases] => SimpleXMLElement Object
                (
                )

            [RefsHighMthPurchasesTermGiven] => SimpleXMLElement Object
                (
                )

            [RefsHighMthPurchasesTermTaken] => SimpleXMLElement Object
                (
                )

            [RefsLowMthPurchases] => SimpleXMLElement Object
                (
                )

            [RefsLowMthPurchasesTermGiven] => SimpleXMLElement Object
                (
                )

            [RefsLowMthPurchasesTermTaken] => SimpleXMLElement Object
                (
                )

            [KissNoOfSuppliers] => SimpleXMLElement Object
                (
                )

            [KissNoOfODSuppliers] => SimpleXMLElement Object
                (
                )

            [KissAmountOS] => SimpleXMLElement Object
                (
                )

            [KissAmountOD] => SimpleXMLElement Object
                (
                )

            [KissPercntage] => SimpleXMLElement Object
                (
                )

            [LatestBankCodeDesc] => SimpleXMLElement Object
                (
                )

            [HoldingCmpName] => SimpleXMLElement Object
                (
                )

        )

)
$new_str = htmlspecialchars_decode($str);
$new_str = str_replace('<?xml version="1.0" encoding="UTF-8"?>','',$new_str);
$xml = simplexml_load_string($new_str);
$dom = new SimpleXMLElement($new_str);
$xml_array = $dom->xpath("//*[name()='ReportSummary']");
echo "{$xml_array[0]['Score']}"; 
因此,我执行以下调用以获取数组

Array
(
    [0] => SimpleXMLElement Object
        (
            [NameChangeIndicator] => N
            [NameChangeDate] => SimpleXMLElement Object
                (
                )

            [PreviousName] => SimpleXMLElement Object
                (
                )

            [Score] => 53
            [NumberOfSubs] => SimpleXMLElement Object
                (
                )

            [NumberOfJU] => SimpleXMLElement Object
                (
                )

            [DateLastJU] => SimpleXMLElement Object
                (
                )

            [NumberActPrincipals] => 1
            [NumberActPrincipalsJU] => SimpleXMLElement Object
                (
                )

            [LastestBankCode] => SimpleXMLElement Object
                (
                )

            [LastestBankCodeDate] => SimpleXMLElement Object
                (
                )

            [NumberRDs] => SimpleXMLElement Object
                (
                )

            [LiqIndicator] => SimpleXMLElement Object
                (
                )

            [TotEnqLast12Mth] => SimpleXMLElement Object
                (
                )

            [TotEnqLast3Mth] => SimpleXMLElement Object
                (
                )

            [RefsNoOfReferences] => SimpleXMLElement Object
                (
                )

            [RefsHighMthPurchases] => SimpleXMLElement Object
                (
                )

            [RefsHighMthPurchasesTermGiven] => SimpleXMLElement Object
                (
                )

            [RefsHighMthPurchasesTermTaken] => SimpleXMLElement Object
                (
                )

            [RefsLowMthPurchases] => SimpleXMLElement Object
                (
                )

            [RefsLowMthPurchasesTermGiven] => SimpleXMLElement Object
                (
                )

            [RefsLowMthPurchasesTermTaken] => SimpleXMLElement Object
                (
                )

            [KissNoOfSuppliers] => SimpleXMLElement Object
                (
                )

            [KissNoOfODSuppliers] => SimpleXMLElement Object
                (
                )

            [KissAmountOS] => SimpleXMLElement Object
                (
                )

            [KissAmountOD] => SimpleXMLElement Object
                (
                )

            [KissPercntage] => SimpleXMLElement Object
                (
                )

            [LatestBankCodeDesc] => SimpleXMLElement Object
                (
                )

            [HoldingCmpName] => SimpleXMLElement Object
                (
                )

        )

)
$new_str = htmlspecialchars_decode($str);
$new_str = str_replace('<?xml version="1.0" encoding="UTF-8"?>','',$new_str);
$xml = simplexml_load_string($new_str);
$dom = new SimpleXMLElement($new_str);
$xml_array = $dom->xpath("//*[name()='ReportSummary']");
echo "{$xml_array[0]['Score']}"; 
$new\u str=htmlspecialchars\u decode($str);
$new_str=str_replace('',$new_str);
$xml=simplexml\u load\u字符串($new\u str);
$dom=新的simplexmlement($new_str);
$xml_array=$dom->xpath(“//*[name()='ReportSummary']”);
回显“{$xml_数组[0]['Score']}”;
但我无法将该对象从阵列中拉出。我不确定数组是否正确 正被正确地发送回我,因为如果我不解码字符串,就不会返回数组。奇怪的是,在数组中我一直看到“SimpleXMLElement对象”,我不确定这是否正确


任何帮助都将不胜感激。

正如转储输出所说,SimpleXML是一种对象类型,而不是创建数组的方法

这两行是写同一件事的不同方式,你只需要其中一行;在任何一种情况下,您都会得到一个
simplexmlement
对象:

$xml = simplexml_load_string($new_str);
$xml = new SimpleXMLElement($new_str);
您看到的外部数组用于保存XPath查询的结果,因为它们可以来自XML树中的任何位置。它是一个
simplexmlement
对象数组

有关如何使用SimpleXML访问数据,请参阅

在您的情况下,
Score
是文档的一个元素,因此需要使用
$node->property
语法进行访问

以下是您的代码的整理版本:

$new_str = htmlspecialchars_decode($str);
// Are you sure the next line is necessary? That looks like a valid XML opening to me.
$new_str = str_replace('<?xml version="1.0" encoding="UTF-8"?>','',$new_str);

$xml = simplexml_load_string($new_str);

// I think this simpler XPath expression means the same as yours, but I might be wrong
$xpath_results = $xml->xpath('//ReportSummary');

// Beware that the XPath could return no matches, in which case the following 
// would give an error. Best to check count($xpath_results) > 0 first.
echo $xpath_results[0]->Score; 
$new\u str=htmlspecialchars\u decode($str);
//你确定下一行是必要的吗?对我来说,这似乎是一个有效的XML。
$new_str=str_replace('',$new_str);
$xml=simplexml\u load\u字符串($new\u str);
//我认为这个更简单的XPath表达式的含义与您的相同,但我可能错了
$xpath_results=$xml->xpath('//ReportSummary');
//注意XPath不能返回匹配项,在这种情况下
//将给出一个错误。最好先检查计数($xpath_结果)>0。
echo$xpath_结果[0]->分数;

对IMSoP的回复:感谢您的帮助,但我不得不对其进行一些修改:

$dom = new SimpleXMLElement($new_str);
$xml_array = $dom->xpath("//*[name()='ReportSummary']");
echo $xml_array[0]->Score;

从中我得到了正确的结果,非常感谢

请向我们展示:
var\u dump($str)的输出并用它更新您的问题(不在评论中)