在做xml解释时,需要判断是否存在某个节点,查了手册函数,硬是没有发现那个函数有这个功能(如果你知道的话,请留言,博主感激涕零)。

下面,就说下博主,经过N多博文,论坛查阅后,得到的一种方法(看到的博文,都只是寥寥几句,没有细说,没有示例代码,因此博主查了好久)。

首先,博主明确告诉读者,在php手册函数里,博主是真的没有发现有这个功能的函数(可能博主英文水平有限,DOMDocument里函数都是英文的)!

因此,在这里,博主是用DOMDocument的xpath来解析的。

看代码:

 $this->dom = new DOMDocument('1.0', 'UTF-8');
$this->dom->loadXML($file); $xpath = new DOMXPath($this->dom);
$sql = '/youdao-fanyi/basic';
$tmp = $xpath->query($sql);

这里是查询<basic>节点(如果看不懂xpath的话,先去了解一下),如果没有<basic>节点,则返回null,这样我们就可以做判断了!!!

下面附上我的xml代码:

 <?xml version="1.0" encoding="UTF-8"?>
<youdao-fanyi>
<errorCode>0</errorCode>
<query><![CDATA[国家]]></query>
<!-- 有道翻译 -->
<translation>
<paragraph><![CDATA[countries]]></paragraph>
</translation>
<!-- 有道词典-基本词典 -->
<basic>
<!-- 音标 -->
<phonetic><![CDATA[guó jiā]]></phonetic>
<!-- 基本释义 -->
<explains>
<ex><![CDATA[state]]></ex>
<ex><![CDATA[nation]]></ex>
<ex><![CDATA[country]]></ex>
<ex><![CDATA[nationality]]></ex>
</explains>
</basic>
<!-- 有道词典-网络释义 -->
<web>
<explain>
<key><![CDATA[国家]]></key>
<value>
<ex><![CDATA[Country]]></ex>
<ex><![CDATA[Nation]]></ex>
<ex><![CDATA[state]]></ex>
</value>
</explain>
<explain>
<key><![CDATA[发展中国家]]></key>
<value>
<ex><![CDATA[developing country]]></ex>
<ex><![CDATA[developing countries]]></ex>
<ex><![CDATA[DMCs developing member countries]]></ex>
</value>
</explain>
<explain>
<key><![CDATA[国家队]]></key>
<value>
<ex><![CDATA[National team]]></ex>
<ex><![CDATA[nation team]]></ex>
<ex><![CDATA[national sports team]]></ex>
</value>
</explain>
</web>
</youdao-fanyi>

php的DOMDocument 如何判断xml是否存在某节点的更多相关文章

  1. php 判断 xml 里是否存在某个节点

    参考网址:http://blog.csdn.net/crazyboy2005/article/details/6114454 DOMDocument中,怎样判断某节点是否存在呢? /* $xml-&g ...

  2. [ActionScript 3.0] 判断XML属性是否存在

    在as3中判断xml节点是否存在以及判断xml某节点是否存在某属性可用下面方法: if(xml.hasOwnProperty("frameRate")){ trace(" ...

  3. C#程序中:如何修改xml文件中的节点(数据)

    要想在web等程序中实现动态的数据内容给新(如网页中的Flash),不会更新xml文件中的节点(数据)是远远不够的,今天在这里说一个简单的xml文件的更新,方法比较基础,很适合初学者看的,保证一看就懂 ...

  4. 答:SQLServer DBA 三十问之一: char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;

    http://www.cnblogs.com/fygh/archive/2011/10/18/2216166.html 1. char.varchar.nvarchar之间的区别(包括用途和空间占用) ...

  5. (转载)读取xml中的指定节点的值

            /// <summary>         /// 读取xml中的指定节点的值        /// </summary>         private st ...

  6. C#程序中:如何删除xml文件中的节点、元素。

    C#中动态的清理xml文件中的垃圾信息是程序员必会的哦.这就像数据库一样,不会清理数据怎么可以呢?其实xml文件就可以用作一个小的数据库,存储一些简单的信息.所以,用C#程序实现xml文件的增.删.改 ...

  7. 读取xml中的指定节点的值

    /// <summary> /// 读取xml中的指定节点的值 /// </summary> private string ReadXmlNode(string filenam ...

  8. 用dom4j修改xml(增加修改节点)

    用dom4j修改xml(增加修改节点) 博客分类: Java XMLJavaMyeclipseServlet  使用dom4j修改解析xml,xml文件的位置是配置在xml.properties文件中 ...

  9. xml文件的根节点layout_width或者layout_height设置无效果的原因分析

    在android开发中相信大家对ListView.GridView等组建都非常熟悉,在使用它们的时候须要自己配置相关的Adapter,而且配置现骨干的xml文件作为ListView等组建的子View, ...

随机推荐

  1. Mapper映射语句高阶应用——ResultMap

    resultMap 元素是MyBatis 中最重要最强大的元素.它就是让你远离 90%的需要从结果 集中取出数据的 JDBC代码的那个东西, 而且在一些情形下允许你做一些 JDBC 不支持的事 情. ...

  2. MYSQL开发技巧之行转列和列转行

    行转列--两种方法第一种方法:行转列我们通常是使用交叉连接和子查询的方式做到,比如下面的例子,查询每个name的对应id的和mysql> select * from user; +----+-- ...

  3. project euler 26:Reciprocal cycles

    A unit fraction contains 1 in the numerator. The decimal representation of the unit fractions with d ...

  4. theos初探:ios越狱开发教程

    开发环境搭建回顾 现在已经在windows上安装好了theos了.在上一篇中都已经讲了,开发环境主要部件就是: 1.theos,主要包含了使用make时的makefile模板文件.包含了各种库和框架的 ...

  5. Eratosthenes筛选法计算质数

    <C和指针>第6章第4道编程题: 质数就是只能被1和本身整除的数.Eratosthenes筛选法是一种计算质数的有效方法.这个算法的第一步就是写下所有从2至某个上限之间的所有整数.在算法的 ...

  6. CodeForces 124B Permutations

    http://codeforces.com/problemset/problem/124/B Description You are given nk-digit integers. You have ...

  7. 数据的加密传输——单片机上实现TEA加密解密算法

    各位大侠在做数据传输时,有没有考虑过把数据加密起来进行传输,若在串口或者无线中把所要传的数据加密起来,岂不是增加了通信的安全性.常用的加密解密算法比如DES.RSA等,受限于单片机的内存和运算速度,实 ...

  8. Wpf中MediaElement循环播放

    原文:Wpf中MediaElement循环播放 前一段时间做了一个项目,里面牵涉到媒体文件的循环播放问题,在网上看了好多例子,都是在xaml中添加为MediaElement添加一个TimeLine,不 ...

  9. java.net.SocketTimeoutException: Read timed out

    If you get java.net.SocketTimeoutException: Read timed out exception Try setting own timeout value w ...

  10. 基于引擎的matlab+vc混合编程的配置

    前段时间在项目中做了一些关于基于引擎的vc+matlab混合编程的工作. 如果你是混合编程新手,我相信使用引擎的方式编程是比较简单快捷的一种方式. 当然这种方法也有其缺点,就是不能脱离matlab运行 ...