導航:首頁 > 編程語言 > 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文件相關的資料

熱點內容
壓縮因子定義 瀏覽:968
cd命令進不了c盤怎麼辦 瀏覽:214
葯業公司招程序員嗎 瀏覽:974
毛選pdf 瀏覽:659
linuxexecl函數 瀏覽:727
程序員異地戀結果 瀏覽:374
剖切的命令 瀏覽:229
干什麼可以賺錢開我的世界伺服器 瀏覽:290
php備案號 瀏覽:990
php視頻水印 瀏覽:167
怎麼追程序員的女生 瀏覽:487
空調外壓縮機電容 瀏覽:79
怎麼將安卓變成win 瀏覽:459
手機文件管理在哪兒新建文件夾 瀏覽:724
加密ts視頻怎麼合並 瀏覽:775
php如何寫app介面 瀏覽:804
宇宙的琴弦pdf 瀏覽:396
js項目提成計算器程序員 瀏覽:944
pdf光子 瀏覽:834
自拍軟體文件夾名稱大全 瀏覽:328