『壹』 關於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
『貳』 PHP怎麼解析微信支付結果返回的xml
php解析xml報文的方法是DOMDocument:
解析方法如下:
$xmlstring = <<<XML
<?xml version='1.0'?>
<document>
<cmd attr='default'>login</cmd>
<login>imdonkey</login>
</document>
XML;
$dom = new DOMDocument();
$dom->loadXML($xmlstring);
print_r(getArray($dom->documentElement));
function getArray($node) {
$array = false;
if ($node->hasAttributes()) {
foreach ($node->attributes as $attr) {
$array[$attr->nodeName] = $attr->nodeValue;
}
}
if ($node->hasChildNodes()) {
if ($node->childNodes->length == 1) {
$array[$node->firstChild->nodeName] = getArray($node->firstChild);
} else {
foreach ($node->childNodes as $childNode) {
if ($childNode->nodeType != XML_TEXT_NODE) {
$array[$childNode->nodeName][] = getArray($childNode);
}
}
}
} else {
return $node->nodeValue;
}
return $array;
}
『叄』 如何用 PHP 的字元串處理函數和正則表達式函數來解析一段 xml 這是什麼意思
xml 是具有特定語法和文本規范的一種文件格式,但究其實質來說還是字元串文本,因此,你完全可以用 Php 的字元串處理函數,以及正則表達式函數來完成對 xml 文件的解析。
通常來說,對於 xml 文檔,PHP 內置提供了多種專門用於處理這種文件的擴展,比如:SimpleXML等。
『肆』 PHP獲取xml中值的幾種方法簡單總結
php 中有個內置類可以用來操作XML, 簡單說下
$xmlData="<xml><name>來自上海</name></xml>";//xml數據
$doc=newDOMDocument();
$doc->loadXML($xmlData);//載入XML數據
$root=$doc->documentElement;//獲取根節點對象
$items=$root->getElementsByTagName('name');//獲取name節點
echo$items[0]->nodeValue;//輸出獲取到的所有節點中的第一個節點的值
foreach($itemsas$value){
echo$value->nodeValue;//輸出節點中的值
}
『伍』 php輸出xml內容
PHP生成XML的方法很多,這里演示最基本,最簡單的字元串構造法。就是使用字元串構造或者拼接成xml數據格式,然後輸出或者生成xml文件。
<?php
$data=array(
array(
'title'=>'',
'country'=>'china',
'name'=>'網路',
),
array(
'title'=>'google',
'country'=>'usa',
'name'=>'谷歌',
)
);
//構造xml數據格式
$xml="<?xmlversion="1.0"encoding="utf-8"?> ";
$xml.="<data> ";
foreach($dataas$itm){
//循環構造xml單項
$item="<item> ";
$item.="<title>".$itm['title']."</title> ";
$item.="<country>".$itm['country']."</country> ";
$item.="<name>".$itm['name']."</name> ";
$item.="</item> ";
$xml.=$item;
}
$xml.="</data> ";
//輸出xml數據
echo$xml;
?>
生成的數據格式如下:
『陸』 如何用php生成xml文件 高手進入 有加分
可以使用php里的dom,如下:
$xmlStr=[文件位置];
$dom
=
new
DOMDocument('1.0');
$dom
->loadXML($xmlStr);
//根
$vogue=$dom->createElement('vogue');
$dom->appendChild($vogue);
//第一級子目錄
$level0=$dom->createElement('level0');
//第一級子目錄的屬性
$attr=$dom->createAttribute('parentTypeID');
$attr->appendChild($dom->createTextNode('-1'));
........
//保存
$dom->saveXML($xmlStr);
但是我更推薦使用print來列印後輸入文件。
因為dom的輸出無法分行,樣例如下:
<?php
$books
=
array();
$books
[]
=
array(
'title'
=>
'PHP
Hacks',
'author'
=>
'Jack
Herrington',
'publisher'
=>
"O'Reilly"
);
$books
[]
=
array(
'title'
=>
'Podcasting
Hacks',
'author'
=>
'Jack
Herrington',
'publisher'
=>
"O'Reilly"
);
?>
<books>
<?php
foreach(
$books
as
$book
)
{
?>
<book>
<title><?php
echo(
$book['title']
);
?></title>
<author><?php
echo(
$book['author']
);
?>
</author>
<publisher><?php
echo(
$book['publisher']
);
?>
</publisher>
</book>
<?php
}
?>
</books>
『柒』 php+xml有什麼用
這個很有用,比如開發一個介面,這個介面互相傳送的數據可以用xml格式的數據。 例如新浪微波提供的介面返回形式就有xml格式的數據。 還有比如php和其他語言(c++)互相通信 ,也是選擇xml格式的數據進行通信。這樣我們獲取了xml格式的數據後呢,當然還需要php進行解析 分離 將這些xml數據展示得到我們想要的網頁上或者編程自己想要的格式保存到自己的資料庫。等等吧! 應用很多對我一般都是用到這些了。
『捌』 php難題(php xml換行)
如果你是用XML類生成的,似乎不太好改。
如果你是輸出字元串生成的XML,那就好辦了,直接輸出 "\n"即可。
另外,沒必要讓XML換行,解析器會自動分析出來的。
『玖』 如何在php文件里寫xml
php文件里寫xml方法:
1、Xml代碼
<?php
$data_array=array(
array(
'title'=>'title1',
'content'=>'content1',
'pubdate'=>'2009-10-11',
),
array(
'title'=>'title2',
'content'=>'content2',
'pubdate'=>'2009-11-11',
)
);
//屬性數組
$attribute_array=array(
'title'=>array(
'size'=>1
)
);
$string=<<<XML
<?xmlversion='1.0'encoding='utf-8'?>
<article>
</article>
XML;
$xml=simplexml_load_string($string);
foreach($data_arrayas$data){
$item=$xml->addChild('item');
if(is_array($data)){
foreach($dataas$key=>$row){
$node=$item->addChild($key,$row);
if(isset($attribute_array[$key])&&is_array($attribute_array[$key]))
{
foreach($attribute_array[$key]as$akey=>$aval){
//設置屬性值
$node->addAttribute($akey,$aval);
}
}
}
}
}
echo$xml->asXML();
?>
『拾』 article.php articlelist.php site.xml 都是什麼意思做什麼用的呢
article.php articlelist.php 這兩個是php文件,php是伺服器端的腳本語言,這兩文件按照文件名的字面意思是文章的處理頁面和文章列表的處理頁面
site.xml是一種標記語言,一般是作配置文件用,可以自定義一些數據以標記的形式放裡面。
樓主也沒貼出文件內容,只能說這么多了