ホームページ  >  記事  >  バックエンド開発  >  php で XML を読み取るのに問題があります。ありがとうございます。

php で XML を読み取るのに問題があります。ありがとうございます。

WBOY
WBOYオリジナル
2016-06-23 14:23:21808ブラウズ

XML ファイルは次のとおりです:

<v time="180530" vi="1" ch="29" nls="0" title="监控实拍" code="qT4j-61ws-Q" enable="1" logo="0" wt="0" band="0"><a><f w="51" h="0" sha1="f04644" size="6012028" brt="2">http://114.80.235.12</f><f w="31" h="0" sha1="f0464" size="6012028" brt="2">http://114.80.236.202</f></a><b/></v><!-- pageview_candidate -->

私の PHP コードは次のように書かれていますが、読み取ることができません。ありがとうございます
//2.读xml$xml_array=simplexml_load_file("wc.xml"); //将XML中的数据,读取到数组对象中foreach($xml_array AS $temp){echo "<pre class="brush:php;toolbar:false">";	print_r($temp->f);echo "
";}

私の目的は、真ん中の 2 つの http アドレスを読み取ることです。ありがとう。


ディスカッションへの返信(解決策)

明確にしてください、Baiduで検索しましたが、何もありません

print_r($xml_array->a->f);


$s =<<< XML<v time="180530" vi="1" ch="29" nls="0" title="监控实拍" code="qT4j-61ws-Q" enable="1" logo="0" wt="0" band="0"><a><f w="51" h="0" sha1="f04644" size="6012028" brt="2">http://114.80.235.12</f><f w="31" h="0" sha1="f0464" size="6012028" brt="2">http://114.80.236.202</f></a><b/></v>XML;$xml = simplexml_load_string($s);//正常遍历,需要确切的知道目标节点所在层次foreach($xml AS $temp){  foreach($temp->f as $v) echo "$v<br";}//xpath 查询foreach($xml->xpath('//f') as $v) echo "$v<br>";
で入手できます
http: //114.80.235.12

http://114.80 .236.202

[code=php]$s =<<< " code="qT4j-61ws-Q"

よろしくお願いします。あなたが毎日幸せであることを願っています。
もっと知りたいのですが、どんな知識ですか?どのような知識を検索すればよいですか?ありがとう。

print_r($xml_array); とすると、

SimpleXMLElement Object(    [@attributes] => Array        (            [time] => 180530            [vi] => 1            [ch] => 29            [nls] => 0            [title] => 监控实拍            [code] => qT4j-61ws-Q            [enable] => 1            [logo] => 0            [wt] => 0            [band] => 0        )    [a] => SimpleXMLElement Object        (            [f] => Array                (                    [0] => http://114.80.235.12                    [1] => http://114.80.236.202                )        )    [b] => SimpleXMLElement Object        (        ))
のような構造が表示され、それに応じてコードを書くのは非常に簡単です。詳細は不要です

XPath は、XML ドキュメント内の情報を検索するための言語です。 XPath は、XML ドキュメント内の要素と属性間を移動するために使用されます。
http://www.w3school.com.cn/xpath/ などの xpath を検索すると、チュートリアルが見つかります。

<?php$s =<<< XML<v time="180530" vi="1" ch="29" nls="0" title="监控实拍" code="qT4j-61ws-Q" enable="1" logo="0" wt="0" band="0"><a><f w="51" h="0" sha1="f04644" size="6012028" brt="2">http://114.80.235.12</f><f w="31" h="0" sha1="f0464" size="6012028" brt="2">http://114.80.236.202</f></a><b/></v>XML; $doc = new DOMDocument();$doc->loadXML($s);$xpath = new DOMXPath($doc);$query = '//f[1]/text()';$entries = $xpath->evaluate($query, $doc);// foreach ($entries as $entry) var_dump($entry);foreach ($entries as $entry) echo $entry->data;$xml = simplexml_load_string($s);foreach($xml->xpath('//f[1]/text()') as $v) echo $v;?>


え、これは 2 番目のアドレスですか? #1 が正解です
//f[ 2]/text()
xpath のカウンタは 1 から始まります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。