导航:首页 > 编程语言 > php读写xml文件

php读写xml文件

发布时间:2022-09-27 17:33:55

A. php怎么读取用户选取的本地xml文件

不能,只能将文件上传到服务器出来后,处理后再转换成图表。
上传文件倒是可以批量上传。

B. php读取xml中根据条件指定的值

首先,你的xml文件,缺少root元素,version后边没有"结尾。

然后是你解析的思路是:

先用simplexml_load_string或者$xml = simplexml_load_file('test.xml');
,读取xml,然后用get_object_vars,转成数组,然后根据数组,找出对应关系,或者在生成数组的时候直接写成‘lisan’=>'no';这个关系。简单点就是直接读成数组,然后遍历,找到对应的值之间的关系就OK

用到的函数:

functiongetXmlData($strXml){
$pos=strpos($strXml,'xml');
if($pos){
$xmlCode=simplexml_load_string($strXml,'SimpleXMLElement',LIBXML_NOCDATA);
$arrayCode=get_object_vars_final($xmlCode);
return$arrayCode;
}else{
return'';
}
}
functionget_object_vars_final($obj)
{
if(is_object($obj)){
$obj=get_object_vars($obj);
}
if(is_array($obj)){
foreach($objas$key=>$value){
$obj[$key]=get_object_vars_final($value);
}
}
return$obj;
}

我处理的结果:

C. php文件中如何在本页打开一个xml文件

$fp=fopen("index.xml","r");//只读打开xml文件
$str=fread($fp,filesize("index.xml));//读取xml文件内容
echo $str; //输出xml
提示一下,用这个方法可以打开包括.php,.html等后缀的文件,不局限于xml文件

D. 关于PHP解析XML文件的..

朋友,你不能在dom操作里边用数组的方法直接调用属性和vlaue
推荐你看下dom手册和php手册,当然如有需要我可以给你发一份到邮箱
你可以用dom的操作来读取
<?php
$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中表现形式:<item upload_name="上3"><download_name>下载通道名称</download_name></item>

c)createComment(text) ---- 该方法以字符串为参数创建一个包含此字符串的注释节点。
例: doc.createComment("This is an XML document")
<item><!--upload_name--><download_name>下载通道名称</download_name></item>
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/proct.xml")
doc.load("D:\proct.xml")

h)loadXML(string) ---- 该方法把成形的XML代码或整个XML文档载入DOMDocument对象中。
例: doc.loadXML("<?xml version=1.0><PRODUCTS><PRODUCT><name>Barbie Doll</name></PRODUCT></PRODUCTS>")

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

E. 如何读取php返回编码为gb2312的xml数据

出错的原因在于PHP程序输出编码和XML文件的编码不一致所导致 方法一: 使用utf-8编码,修改方法如下: 一.把两个gb2312改为utf-8 二.在xml文件上点右链,选择用记事本打开,另存为,编码由ansi改为,覆盖保存。 方法二: 直接设置PHP文件格式为 ...

F. php中怎么调用xml文件

NEW DOMDOCUMENT();

G. PHP读取xml的foreach问题

你好,解决方案:
发现你的逻辑没有分析清楚,一下是参考代码:
$roots = $doc->getElementsByTagName( "root" );

foreach($roots as $p=>$root){

$pros = $root->getElementsByTagName('province');

foreach ($pros as $c=>$pro) {
//$c 决定着几个省
echo $pro_name = $pros->item($c)->attributes->item(0)->nodeValue;
$citys = $pro->getElementsByTagName('city');

foreach($citys as $key=>$city){
//$key 决定着几个市
echo $city_name = $citys->item($key)->attributes->item(0)->nodeValue;
$dis = $city->getElementsByTagName('district');

foreach($dis as $d=>$district){
//$d 决定着几个区
echo $dis->item($d)->attributes->item(0)->nodeValue;

}

}
}
}
希望对你有所帮助!!

H. PHP读取xml文件

以前做过联通或电信的service订购接口,收到的内容就是XML的,需要用到PHP的XML处理功能,你的代码可以这样:
<xmp>
<?php

$string=file_get_contents("http://www.orderjiaju.com/zixun/data/rss/3.xml");
if($string!=""):
$xml = new DomDocument('1.0');
$xml->loadXML($string);

//班台
$BanTai=array(
'Title'=>$xml->getElementsByTagName('channel')->item(0)->childNodes->item(1)->nodeValue,
'Link' =>$xml->getElementsByTagName('channel')->item(0)->childNodes->item(3)->nodeValue
);

for($i=0;$i<3;$i++)
{
$Title[]=array(
'Title'=>$xml->getElementsByTagName('item')->item($i)->childNodes->item(1)->nodeValue,
'Link' =>$xml->getElementsByTagName('item')->item($i)->childNodes->item(3)->nodeValue
);
}

print_r($BanTai);
print_r($Title);
endif;
?>
</xmp>

回答补充:

现在你直接,然后执行没效果吗?
我这里是可以的呢,测试网址是:service.020i.net/test_xml.php

I. php读取xml文件

你的问题是2个

1.怎么读取文件?

这个问题一楼的回答了,用file函数就可以了,然后你

foreach ($arr as $line) {
echo $line."<br />";
}

2.读取XML,

那么2楼的回答了,但是前提是,你必须知道这个XML的结构,才能使用相关的dom函数

J. 怎么用php提取xml文件内容

创建一个以.xml结尾的文档
内容如下:
<?xml version="1.0" encoding="utf-8"?>
<class>
<student info="美女">
<name>小乔</name>
<sex>女</sex>
<age>20</age>
</student>
<student>
<name>周瑜</name>
<sex>男</sex>
<age>25</age>
</student>
<student>
<name>hsy</name>
<sex>男</sex>
<age>21</age>
</student>
</class>
创建以.php结尾的文件:代码如下:
<?php
header('content-type:text/html;charset=utf-8');
//1、创建一个DOMDocument对象。该对象就表示 xml文件
$xmldoc = new DOMDocument();
//2、加载xml文件(指定要解析哪个xml文件,此时dom树节点就会加载到内存中)
$xmldoc->load("class.xml");
//3、目标:获取第一个学生的名字
$stu = $xmldoc->getElementsByTagName("name");//直接找到节点name
$stu1 = $stu->item(0);// item(1)时,可以取到周瑜

$sex=$xmldoc->getElementsByTagName("sex");
$sex1= $sex->item(0);
echo $sex1->nodeValue;
echo $stu1->nodeValue;
?>
结果显示为:女小乔

阅读全文

与php读写xml文件相关的资料

热点内容
压缩因子定义 浏览:966
cd命令进不了c盘怎么办 浏览:212
药业公司招程序员吗 浏览:972
毛选pdf 浏览:658
linuxexecl函数 浏览:726
程序员异地恋结果 浏览:373
剖切的命令 浏览:227
干什么可以赚钱开我的世界服务器 浏览:289
php备案号 浏览:990
php视频水印 浏览:167
怎么追程序员的女生 浏览:487
空调外压缩机电容 浏览:79
怎么将安卓变成win 浏览:459
手机文件管理在哪儿新建文件夹 浏览:724
加密ts视频怎么合并 浏览:775
php如何写app接口 浏览:804
宇宙的琴弦pdf 浏览:396
js项目提成计算器程序员 浏览:944
pdf光子 浏览:834
自拍软件文件夹名称大全 浏览:328