科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件DOMXML: Expat之外的另一选择

DOMXML: Expat之外的另一选择

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在网上有许多php的XML教程,但是只有少数介绍如何使用DOM来解析XML。

作者:施文建编译 来源:yesky 2007年10月26日

关键字: Linux

  • 评论
  • 分享微博
  • 分享邮件
在DOM中使用的对象

  你可能会觉得困惑,什么是一个DomNode。我们从这里开始讨论包含在DOM模型中的对象。DOM定义了五种对象:DomDocument, DomNode, DomAttribute, DomDtd, 和 DomNamespace。我们将把主要注意力集中在DomDocument和DomNode对象,因为他们是最常用的。

  Node对象

  下面是一个DomNode对象所包含内容的概览。

class DomNode
 properties:
  name
  content
  type
 methods:
  lastchild()
  children()
  parent()
  new_child( $name,$content )
  getattr( $name )
  setattr( $name,$value )
  attributes()

  properties需要一些详细的说明。

  ·name 属性实际上是节点标记的名称。一个引用title标记的节点可能就是用'title'作为节点名。

  ·content 属性通常是空的。然而文本型节点使用这个属性来保存文本。

  ·type 属性是个常数,它明确定义了这个节点是什么类型的对象。有一些DomNode对象的类型。这些类型常数的列表可以从http://www.php.net/manual/ref.domXML.php在线获得。例如,一个包含文本内容的节点就可能有一个XML_TEXT_NODE的类型。

  methods也需要解释一下。

  ·lastchild() 返回一个节点的最后一个子节点。

  ·parent() 返回一个节点的父节点。例如,我们这里title节点的父节点就是'book'。

  ·children() 返回一个包含某节点所有子节点的数组。例如,author节点的children就是'name'和'birthdate'。

  ·new_child() 增加一个新的子节点,包括一个名称和一些作为参数的内容。

  ·getattr()和setattr()都是用于处理属性的。一个是取得属性值,一个是设置属性值。

  ·attributes() 返回一个DomAttribute对象的数组。

  DomDocument对象

  DomDocument对象也是重要的。

class DomDocument
 properties:
  version
  encoding
  standalone
  type
 methods:
  root()
  children()
  add_root( $node )
  dtd()
  dumpmem()

  properties(属性)的名字就可以解释自身的含义。

  ·'version' 指文档的XML版本号。

  ·'encoding' 指文本的编码。

  ·'standalone' 是一个布尔值,它决定文档是否独立。

  method(方法)也是相当简单的。

  ·root() 返回文档的根节点。如果我们载入前面的XML范例作为一个DomDocument对象,那么根节点就是'book'。

  ·children() 与DomNode中的children一样。

  ·add_root() 在XML文档中增加一个新的根节点。如果你想用一个其他节点来代替'book'节点,那么你就要用到这个方法了。

  ·dtd() 返回XML文档的dtd。

  ·dumpmem() 返回XML数据的字符串表示。译注:dumpmem()方法将整个DomDocument对象串行化为一个字符串,并返回。

  由XMLtree()返回的DomDocument对象

  XMLtree(),返回另一种类型的DomDocument对象,它可能会给你带来麻烦。这个对象没有方法,它用属性代替了方法。它有一个真正的树形结构。

class DomDocument
 properties:
  version
  encoding
  standalone
  name
  content
  type
  attributes
  children

  它很容易使用。例如,用不着使用一个方法去得到一个节点的子节点,只要访问它的'children'属性就可以了。同样,'children'和'attributes'属性都是数组。

  其他的对象

  我将列出其他对象以及它们的属性和方法作为参考。在这篇文章中,我们将用不到它们。

class Attribute
 properties:
  name
  content
  methods:
  name()

 class Dtd
  properties:
   extid
   sysid
   name
class Namespace
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章