Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SimpleXML跳过属性_Php_Simplexml_Xmlreader - Fatal编程技术网

Php SimpleXML跳过属性

Php SimpleXML跳过属性,php,simplexml,xmlreader,Php,Simplexml,Xmlreader,测试XML: <?xml version="1.0" encoding="UTF-8"?> <Transfer> <ABR recordLastUpdatedDate="20180329" replaced="N"> <ABN status="ACT" ABNStatusFromDate="20000214">80007321682</ABN> <EntityType>

测试XML:

<?xml version="1.0" encoding="UTF-8"?>
<Transfer>
    <ABR recordLastUpdatedDate="20180329" replaced="N">
        <ABN status="ACT" ABNStatusFromDate="20000214">80007321682</ABN>
        <EntityType>
            <EntityTypeInd>PUB</EntityTypeInd>
            <EntityTypeText>Australian Public Company</EntityTypeText>
        </EntityType>
        <MainEntity>
            <NonIndividualName type="MN">
                <NonIndividualNameText>BLACK CABS COMBINED PTY LTD</NonIndividualNameText>
            </NonIndividualName>
            <BusinessAddress>
                <AddressDetails>
                    <State>VIC</State>
                    <Postcode>3166</Postcode>
                </AddressDetails>
            </BusinessAddress>
        </MainEntity>
    </ABR>
</Transfer>
$f='test.xml';
$reader=new XMLReader();
$reader->open($f);
while($reader->read()){
    if($reader->nodeType==XMLReader::ELEMENT && $reader->name=='ABR'){
        $doc=new DOMDocument('1.0','UTF-8');
        $xml=simplexml_import_dom($doc->importNode($reader->expand(),true));
        print_r($xml);
    }
}
$reader->close();
SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [recordLastUpdatedDate] => 20180329
            [replaced] => N
        )

    [ABN] => 80007321682
    [EntityType] => SimpleXMLElement Object
        (
            [EntityTypeInd] => PUB
            [EntityTypeText] => Australian Public Company
        )

    [MainEntity] => SimpleXMLElement Object
        (
            [NonIndividualName] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [type] => MN
                        )

                    [NonIndividualNameText] => BLACK CABS COMBINED PTY LTD
                )

            [BusinessAddress] => SimpleXMLElement Object
                (
                    [AddressDetails] => SimpleXMLElement Object
                        (
                            [State] => VIC
                            [Postcode] => 3166
                        )

                )

        )

)
PHP输出:

<?xml version="1.0" encoding="UTF-8"?>
<Transfer>
    <ABR recordLastUpdatedDate="20180329" replaced="N">
        <ABN status="ACT" ABNStatusFromDate="20000214">80007321682</ABN>
        <EntityType>
            <EntityTypeInd>PUB</EntityTypeInd>
            <EntityTypeText>Australian Public Company</EntityTypeText>
        </EntityType>
        <MainEntity>
            <NonIndividualName type="MN">
                <NonIndividualNameText>BLACK CABS COMBINED PTY LTD</NonIndividualNameText>
            </NonIndividualName>
            <BusinessAddress>
                <AddressDetails>
                    <State>VIC</State>
                    <Postcode>3166</Postcode>
                </AddressDetails>
            </BusinessAddress>
        </MainEntity>
    </ABR>
</Transfer>
$f='test.xml';
$reader=new XMLReader();
$reader->open($f);
while($reader->read()){
    if($reader->nodeType==XMLReader::ELEMENT && $reader->name=='ABR'){
        $doc=new DOMDocument('1.0','UTF-8');
        $xml=simplexml_import_dom($doc->importNode($reader->expand(),true));
        print_r($xml);
    }
}
$reader->close();
SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [recordLastUpdatedDate] => 20180329
            [replaced] => N
        )

    [ABN] => 80007321682
    [EntityType] => SimpleXMLElement Object
        (
            [EntityTypeInd] => PUB
            [EntityTypeText] => Australian Public Company
        )

    [MainEntity] => SimpleXMLElement Object
        (
            [NonIndividualName] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [type] => MN
                        )

                    [NonIndividualNameText] => BLACK CABS COMBINED PTY LTD
                )

            [BusinessAddress] => SimpleXMLElement Object
                (
                    [AddressDetails] => SimpleXMLElement Object
                        (
                            [State] => VIC
                            [Postcode] => 3166
                        )

                )

        )

)
问题:

<?xml version="1.0" encoding="UTF-8"?>
<Transfer>
    <ABR recordLastUpdatedDate="20180329" replaced="N">
        <ABN status="ACT" ABNStatusFromDate="20000214">80007321682</ABN>
        <EntityType>
            <EntityTypeInd>PUB</EntityTypeInd>
            <EntityTypeText>Australian Public Company</EntityTypeText>
        </EntityType>
        <MainEntity>
            <NonIndividualName type="MN">
                <NonIndividualNameText>BLACK CABS COMBINED PTY LTD</NonIndividualNameText>
            </NonIndividualName>
            <BusinessAddress>
                <AddressDetails>
                    <State>VIC</State>
                    <Postcode>3166</Postcode>
                </AddressDetails>
            </BusinessAddress>
        </MainEntity>
    </ABR>
</Transfer>
$f='test.xml';
$reader=new XMLReader();
$reader->open($f);
while($reader->read()){
    if($reader->nodeType==XMLReader::ELEMENT && $reader->name=='ABR'){
        $doc=new DOMDocument('1.0','UTF-8');
        $xml=simplexml_import_dom($doc->importNode($reader->expand(),true));
        print_r($xml);
    }
}
$reader->close();
SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [recordLastUpdatedDate] => 20180329
            [replaced] => N
        )

    [ABN] => 80007321682
    [EntityType] => SimpleXMLElement Object
        (
            [EntityTypeInd] => PUB
            [EntityTypeText] => Australian Public Company
        )

    [MainEntity] => SimpleXMLElement Object
        (
            [NonIndividualName] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [type] => MN
                        )

                    [NonIndividualNameText] => BLACK CABS COMBINED PTY LTD
                )

            [BusinessAddress] => SimpleXMLElement Object
                (
                    [AddressDetails] => SimpleXMLElement Object
                        (
                            [State] => VIC
                            [Postcode] => 3166
                        )

                )

        )

)
ABN
元素(
status
ABNStatusFromDate
)的属性不在输出中,即使其他属性也不在输出中

请帮助我理解为什么缺少这些属性


PS-伪文本,因此不会对我的帖子主要是代码给出警告回答:
print\r
不用于显示SimpleXML对象


我可以通过
$xml->ABN['status']

直接访问该属性。注意:回答,只需注意:
print\r($xml->ABN)
显示它们。另外,
print\r($xml)
会在您有子节点时显示它们(例如:
80007321682
)。通过直接引用XML数据,我现在走上了正确的道路。