在做xml解釋時,需要判斷是否存在某個節點,查了手冊函數,硬是沒有發現那個函數有這個功能(如果你知道的話,請留言,博主感激涕零)。
下面,就說下博主,經過N多博文,論壇查閱后,得到的一種方法(看到的博文,都只是寥寥幾句,沒有細說,沒有示例代碼,因此博主查了好久)。
首先,博主明確告訴讀者,在php手冊函數里,博主是真的沒有發現有這個功能的函數(可能博主英文水平有限,DOMDocument里函數都是英文的)!
因此,在這里,博主是用DOMDocument的xpath來解析的。
看代碼:
1 $this->dom = new DOMDocument('1.0', 'UTF-8'); 2 $this->dom->loadXML($file); 3 4 $xpath = new DOMXPath($this->dom); 5 $sql = '/youdao-fanyi/basic'; 6 $tmp = $xpath->query($sql);
這里是查詢<basic>節點(如果看不懂xpath的話,先去了解一下),如果沒有<basic>節點,則返回null,這樣我們就可以做判斷了!!!
下面附上我的xml代碼:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <youdao-fanyi> 3 <errorCode>0</errorCode> 4 <query><![CDATA[國家]]></query> 5 <!-- 有道翻譯 --> 6 <translation> 7 <paragraph><![CDATA[countries]]></paragraph> 8 </translation> 9 <!-- 有道詞典-基本詞典 --> 10 <basic> 11 <!-- 音標 --> 12 <phonetic><![CDATA[guó jiā]]></phonetic> 13 <!-- 基本釋義 --> 14 <explains> 15 <ex><![CDATA[state]]></ex> 16 <ex><![CDATA[nation]]></ex> 17 <ex><![CDATA[country]]></ex> 18 <ex><![CDATA[nationality]]></ex> 19 </explains> 20 </basic> 21 <!-- 有道詞典-網絡釋義 --> 22 <web> 23 <explain> 24 <key><![CDATA[國家]]></key> 25 <value> 26 <ex><![CDATA[Country]]></ex> 27 <ex><![CDATA[Nation]]></ex> 28 <ex><![CDATA[state]]></ex> 29 </value> 30 </explain> 31 <explain> 32 <key><![CDATA[發展中國家]]></key> 33 <value> 34 <ex><![CDATA[developing country]]></ex> 35 <ex><![CDATA[developing countries]]></ex> 36 <ex><![CDATA[DMCs developing member countries]]></ex> 37 </value> 38 </explain> 39 <explain> 40 <key><![CDATA[國家隊]]></key> 41 <value> 42 <ex><![CDATA[National team]]></ex> 43 <ex><![CDATA[nation team]]></ex> 44 <ex><![CDATA[national sports team]]></ex> 45 </value> 46 </explain> 47 </web> 48 </youdao-fanyi>