Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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 从XML文件中读取属性_Php_Xml - Fatal编程技术网

Php 从XML文件中读取属性

Php 从XML文件中读取属性,php,xml,Php,Xml,我正在尝试从XML文件中读取XML属性。我想回应巴德纳文 我错了什么 打印给我: SimpleXMLElement Object ( [baad] => SimpleXMLElement Object ( [@attributes] => Array ( [baadId] => 1234 [maalerId] => 32217 [baadNavn] => Ongo Bongo [baadStatus] => dhkolbaad [dhKlasseStat

我正在尝试从XML文件中读取XML属性。我想回应巴德纳文


我错了什么


打印给我:

SimpleXMLElement Object ( [baad] => SimpleXMLElement Object ( [@attributes] => Array ( [baadId] => 1234 [maalerId] => 32217 [baadNavn] => Ongo Bongo [baadStatus] => dhkolbaad [dhKlasseStatus] => skrogmedspeciel [nation] => DEN [sejlnummer] => 46 [byggerNavn] => Granada Yacht [byggeAar] => 1978 [maaleDato] => 1991-05-13T00:00:00 [stabgodk] => 0 [skrogMaterialeId] => 1003 [materiale] => GRP [opfolg] => 0 [fysisk] => 1 [baadtypeId] => 146 [rigsejlId] => 28158 [skrogId] => 17214 [specielId] => 79368 ) [certifikat] => SimpleXMLElement Object ( [@attributes] => Array ( [certifikatId] => 1234 [gyldigt] => 0 ) ) [baadtype] => SimpleXMLElement Object ( [@attributes] => Array ( [baadtypeId] => 146 [baadtypeNavn] => GRANADA 31 [baadStatus] => dhkolbaad [dhKlasseStatus] => skrogmedspeciel [dhBeregnes] => 1 [bem] => Granada 311 har samme skrog som Granada 31. De første ca. 35 var med blykøl (KC 0,96) - senere kommer det med jernkøl (KC 1,17) [skrogId] => 17214 [specielId] => 79368 ) ) [rigsejl] => SimpleXMLElement Object ( [@attributes] => Array ( [RigsejlId] => 28158 [E] => 3.27 [P] => 11.14 [HB] => 0.15 [MGM] => 2.10 [MGU] => 1.21 [Tmax] => 12.10 [LP] => 5.23 [FSP] => 0.08 [SPL] => 0.00 [J] => 3.49 [TPS] => 0.00 [JHW] => 0.00 [ISP] => 12.38 [SL] => 0.00 [SLU] => 0.00 [SLE] => 0.00 [SF] => 0.00 [SMG] => 0.00 [SFA] => 0.00 [SMGA] => 0.00 [PropelId] => 2 [propel] => Fri foldepropel med 2-3 blade (2) [RF] => 0 [MF] => 0 [HF] => 0 ) ) [skrog] => SimpleXMLElement Object ( [@attributes] => Array ( [SkrogId] => 17214 [Gmax] => 6.42 [SGmax] => 5.59 [FBSB] => 0.93 [FBBB] => 0.94 [SBmax] => 5.73 [UDFSB] => 0.26 [UDFBB] => 0.26 [OF] => 1.17 [OA] => 0.00 [UDHBmax] => 0.00 [UDHmax] => 0.00 [STF] => 1.11 [AF] => 0.00 ) ) [speciel] => SimpleXMLElement Object ( [@attributes] => Array ( [SpecielId] => 79368 [Bmax] => 3.05 [LOA] => 9.38 [D] => 4.17 [K] => 1.80 [KC] => 0.96 [KFId] => 1 [KF] => Normal [KontrolVejet] => 0 [KontrolMaalt] => 0 [KontrolKrenget] => 0 ) ) [ejer] => SimpleXMLElement Object ( [@attributes] => Array ( [personId] => 53371 [klubId] => 318 [klubNavn] => Aarhus Sejlklub [arrangor] => 1 ) ) [offentligmaaler] => SimpleXMLElement Object ( [@attributes] => Array ( [personId] => 32217 [aktiv] => 0 [maaHentePersonlister] => 0 [offentlig] => 0 [sejlmager] => 0 [maalerbem] => [navn] => Niels Agerskov ) ) [beregning] => SimpleXMLElement Object ( [@attributes] => Array ( [baadId] => 1234 [status] => beregnet [oprettetTid] => 2019-05-10T12:15:32.637 [beregnetTid] => 2019-05-10T12:16:31.447 [beregnetOATid] => 43595.5115 [beskedSendes] => 1 ) ) ) )
XML文件包含:


我希望得到“Ongo Bongo”作为结果。

您可以在节点上使用attributes()函数来获取其属性:

$xml_str = '<xml>
    <node>
        <someTag cp="c2">content</someTag>
    </node>
</xml>';
$res = simplexml_load_string($xml_str);

$items = $res->xpath("//someTag");
var_dump((string) $items[0]->attributes()->cp);
$xml\u str='1〕
内容
';
$res=simplexml\u load\u字符串($xml\u str);
$items=$res->xpath(“//someTag”);
变量转储((字符串)$items[0]->attributes()->cp);
返回的元素是SimpleXMLElement,因此为了使用它,我将其转换为字符串(使用(字符串)转换)。

$url=”https://xml.websejler.dk/da/baad/1234";
$xml=simplexml\u加载文件($url);
echo(字符串)$xml->baad->attributes()['baadNavn'];//昂戈邦戈

使用对象访问:
$xml->baad->baadNavn
。但是,当提出这样的问题时,您应该真正提供源XML。或者至少是它的相关示例。echo$xml->baad->baadNavn;不起作用。您能否尝试使用我的代码并返回一个使用我的代码的示例?请将您的XML放在问题的主体中。也显示你期望的结果。打印给我:SimpleXMLElement对象([baad]=>SimpleXMLElement对象([@attributes]=>Array([baadId]=>1234[maalerId]=>32217[baadNavn]=>Ongo Bongo[baadStatus]=>dhkolbaad[DhklassessStatus]=>skrogmedspeciel[nation]=>DEN[Sejlnumer]=>46……。我希望是“Ongo Bongo”因此,请将类似的信息放在问题中,而不是放在注释中。谢谢Jim,这很好。但是如果希望获得baadtype->attributes()['baadtypeNavn']=GRANADA 31,该怎么办?我尝试使用echo(string)$xml->baadtype->attributes()['baadtypeNavn'];但这不起作用。我缺少什么?
baadtype
baad
的子节点,您需要按照节点树找到所需的节点:
echo(string)$xml->baad->baadtype->attributes()['baadtypeNavn'];