Chinaunix首页 | 论坛 | 博客
  • 博客访问: 430250
  • 博文数量: 78
  • 博客积分: 1563
  • 博客等级: 上尉
  • 技术积分: 910
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-25 09:58
个人简介

爬虫

文章分类

全部博文(78)

文章存档

2020年(1)

2016年(1)

2015年(9)

2014年(1)

2013年(8)

2012年(6)

2011年(3)

2010年(4)

2008年(8)

2007年(13)

2006年(24)

我的朋友

分类:

2010-11-12 20:40:09

你可以用dom的操作来读取
$doc=new DOMDocument();
$doc->load("liuyan.xml");
$liuyan=$doc->getElementsByTagName("line");
foreach($liuyan as $ly)
{
  
     $id=$ly->getAttribute("id");

     $nicker=$ly->getElementsByTagName("nicker");
     $nicker=$nicker->item(0)->nodeValue;
     $nicker=iconv("utf-8","gb2312",$nicker);

     $email=$ly->getElementsByTagName("email");
     $email=$email->item(0)->nodeValue;

     $url=$ly->getElementsByTagName("url");
     $url=$url->item(0)->nodeValue;

     $content=$ly->getElementsByTagName("content");
     $content=$content->item(0)->nodeValue;
     $content=iconv("utf-8","gb2312",$content);

     $creatime=$ly->getElementsByTagName("create");
     $creatime=$creatime->item(0)->nodeValue;

     //$creatime=date("Y-m-j",$creatime);
// echo "nicker:".$nicker."email:".$email."url:".$url."content:".$content;
?>

dom文档
DOMDocument对象常用方法:
a)createElement(elementName) ---- 该方法以元素名为参数创建一个用此参数命名的元素节点。(不能创建名称空间受限制的元素。如果要创建名称空间受限制的元素,必须使用createNode()方法)
例: doc.createElement("PRODUCT"),有些用到:doc-> creatElement('item')

b)createAttribute(attributeName) ---- 该方法以属性名为参数创建一个用此参数命名的属性节点。
例: doc.createAttribute("PRODID")
xml中表现形式:下载通道名称

c)createComment(text) ---- 该方法以字符串为参数创建一个包含此字符串的注释节点。
例: doc.createComment("This is an XML document")
下载通道名称
d)createTextNode(text) ---- 该方法以字符串为参数创建一个包含指定字符串的正文节点。
例: doc.createTextNode("Sony Workman")

e)createNode(type,name,namespace-URI) ---- 该方法创建元素节点。三个参数,"类型"参数是variant型,既可以是字符串也可以是整型。第二个参数是字符串,它代表将要创建的节点的名字。第三个参数是代表namespace-URI的字符串。如果namespace-URI为空字符串,则新创建的节点就没有名称空间URI
例: doc.createNode("element","PRODUCT","")
     doc.createNode("element","prod: PRODUCT","blog.csdn.net/fcrpg2005")
     doc.createNode(1,"PRODUCT","")

f)getElementsByTagName(elementName) ---- 该方法以字符串为参数。这个字符串是要搜索的元素。返回IXMLDOMNodeList对象,包含指定元素名称的节点的集合。可以用这些节点信来浏览操纵存储在指定元素中的值。
例: doc.getEelmentsByTagName("PRICE")

g)load(XMLdocument) ---- 该方法以字符串为参数。这个字符串是XML文档的地址(HTTP地址或本地地址)
例: doc.load("http://blog.csdn.net/fcrpg2005/product.xml")
  doc.load("D:\product.xml")

h)loadXML(string) ---- 该方法把成形的XML代码或整个XML文档载入DOMDocument对象中。
例: doc.loadXML("Barbie Doll")

i)transformNode(stylesheet object) ---- 该方法以风格表对象为参数。通过把相应的风格表加到XML文档上来处理节点,然后返回转换结果。
例: doc.transformNode("product.xsl")

j)appendChild(child node) ---- 该方法以对象为参数。把这个对象作为最后的子节点加在XML文档上。createNode() 或者 createElement()方法可以创建节点或元素。但是它们不会把新建的节点加到文档树形结构上。而是需要用appendChild()方法,insertBefore()方法,或者replaceChild()方法把新建的节点加上去。
例: doc.appendChild(root) ---- PS: root是一个用createNode()或createElement()方法创建的节点

k)save(destination) ---- 该方法以对象为参数。这个对象可以是一个DOMDocument对象也可以是一个文件名。save()方法把DOMDocument对象保存在指定的目的地。
例: doc.save("http://blog.csdn.net/fcrpg2005/product.xml")

* DOMDocument对象常用属性:
a)async ---- 该属性用来指定是否允许异步加载。属性async取布尔值。
例: doc.async = false  --同步

b)childNodes ---- 该属性返回属于一个父节点的子节点集合(即返回当前元素所有子元素的数组对象)。该属性的值是对象IXMLDOMNodeList的类型。
例: var firstelem = doc.childNodes.item(0)

c)documentElement ---- 该属性包含用对象DOMDocument表示的XML文档的根元素。
例: var root = doc.documentElement

d)firstChild ---- 该属性返回父元素的第一个子节点。该元素是只读的。
例: var firstelem = doc.firstChild

e)lastChild ---- 该属性返回父元素的最后一个子节点。
例: var lastelem = doc.lastChild

f)parseError ---- 该属性返回一个包含大部分最近产生的错误信息的对象。
例: var error = doc.parseError

g)readyState ---- 该属性返回XML文档的状态。它显示这个文档是否已完全载入。4个状态:0-未初始化、1-正在加载、2-已加载、3-交互中、4-已完成
例: var stateInfo = doc.readState
  if(stateInfo == 4) { // Document loading
   // Coding
  }

h)xml ---- 该属性返回一个节点以有其子节点的XML表示。
例: document.write(doc.xml)

i)validateOnParse ---- 该属性指定解析器是否在解析XML文档时验证其合法性。
例: doc.validateOnParse = true
阅读(1326) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~