顯示具有 xml 標籤的文章。 顯示所有文章
顯示具有 xml 標籤的文章。 顯示所有文章

2012年11月20日 星期二

[php][引用] 透過 CURL 去 POST XML file

引用來源:http://www.phpmind.com/blog/2009/08/how-to-post-xml-using-curl/

透過CURL 去模擬XML file post 的行為.

  <?php $xml_data ='<AATAvailReq1>'. '<Agency>'. '<Iata>1234567890</Iata>'. '<Agent>lgsoftwares</Agent>'. '<Password>mypassword</Password>'. '<Brand>phpmind.com</Brand>'. '</Agency>'. '<Passengers>'. '<Adult AGE="" ID="1"></Adult>'. '<Adult AGE="" ID="2"></Adult>'. '</Passengers>'. '<HotelAvailReq1>'. '<DestCode>JHM</DestCode>'. '<HotelCode>OGGSHE</HotelCode>'. '<CheckInDate>101009</CheckInDate>'. '<CheckOutDate>101509</CheckOutDate>'. '<UseField>1</UseField>'. '</HotelAvailReq1>'. '</AATAvailReq1>'; $URL = "https://www.yourwebserver.com/path/"; $ch = curl_init($URL); curl_setopt($ch, CURLOPT_MUTE, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml')); curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml_data"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); ?>

2011年9月21日 星期三

php 取代 htmlspecialchars 函數 xml 中會用到.

取代 htmlspecialchars 函數 . 因為若是重複置換 & 每次都會被置換成 &amp; 所以 原本 < 變成 &lt; , 再經一次轉換就變成 &amp;lt; 在第二次就變成 &amp;amp;lt; function html_for_xml ($str){ $str = str_replace('<','&lt;',$str); $str = str_replace('>','&gt;',$str); $str = str_replace('"','&quot;',$str); $str = str_replace('\'','&#039;',$str); return preg_replace('/&(?!lt;|gt;|quot;|#039;|amp;)/eis','&amp;',$str); } 將&amp; 全部還原成 & 的 function function html_for_xml2 ($str){ $str = str_replace('&amp;','&',$str); if (stristr($str,"&amp;") != false) { $str = html_for_xml2($str); } return $str; }

2011年3月4日 星期五

XML 簡介

簡介

* XML是用來建立描述結構化資料標示語言的語言。
* 與資料無關的格式。
* 開放,可讓人讀取的資料格式,看起來像是HTML。
* 能避免瀏覽器或是其他中介軟體,自行增加特定的HTML標籤。
* 具擴展性,不像HTML有固定的格式。

語法規則

範例:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

規則1:必須以XML文件宣告為起始
<?xml version="1.0" encoding="ISO-8859-1"?>
這叫 XML宣告(declaration),更有學問的稱呼為 前言(prolog)。其目的是在宣告,這是一份XML文件及宣告目前所用的XML版 本。其中version這個註明版本的屬性是一定要有的,encoding表示文檔所用的語言編碼。

規則2:所有的標籤必須有相應的結束標籤
在HTML中,標識可能不是成對出現的。而在XML中規定,所有標識必須成對出現,有一個開始標識,就必須有一個結束標識。否則將被視為錯誤。
例如:正確的寫法→<to>Tove</to>
錯誤的寫法→<to>Tove<to>

規則3:注意你的大小寫
在XML文檔中,大小寫是有區別的。<P>和<p>是不同的標籤。注意在寫元素時,前後標籤大小寫要保持一樣。
例如:正確的寫法→<heading>Reminder</heading>
錯誤的寫法→<heading>Reminder</Heading>

規則4:所有的空標籤也必須被關閉
空標識就是標識對之間沒有內容的標籤。比如<br>,<img>等標識。在XML中,規定所有的標籤必須有結束標籤,針對這樣的空標籤,XML中處理的方法是在原標籤最後加/,就可以了。
例如:<br>應寫為<br />;<IMG src= "cool.gif">應寫為<IMG src= "cool.gif" />

規則5:XML元素必須正確嵌套
在HTML中,你可能會看到不正確的嵌套元素:
<note><from>Jani</note></from>
在XML中,所有元素 必須 被正確地嵌套在彼此:
<note><from>Jani</from></note>
在上述例子中,“正確嵌套”的意思是,從打開的<note>元素內<from>元素,它必須關閉內<from>元素。

規則6:一個XML程式裡面必須有一個根元素
什麼是根元素在下一節會為大家說明。

規則7:實體引用
某些字符在XML中具有特殊意義。如果你把一個字符,如“<”內一個XML元素時,它將產生一個錯誤,因為解析器解釋它作為開始一個新元素。這將產生一個 XML錯誤:
<message>if salary < 1000 then</message>
為了避免這種錯誤,把“<”字符替換成一個 實體引用:
<message>if salary &lt; 1000 then</message>
在 XML 中有五個預先保留的實體參考,如下表所示:

~實體參考 ~符號
< &lt;
> &gt;
& &amp;
' &#039;
" &quot;
每一個實體參考都是由「&」符號開始,然後以「;」結束。

來源:http://studiesweb.wikidot.com/xml:main

2011年1月18日 星期二

[php] xsd:dateTime 格式轉換

2011-01-18T16:00:00.000Z這什麼鬼格式啊~  ISO-8601格式
請參考這邊


$t = '2011-01-18T16:00:00.000Z';
echo date('Y-m-d H:i:s',&nbsp; strtotime($t)+ 3600*8 )&nbsp; ; // 台北+8小時

2009年3月24日 星期二

php 解析xml

php本身就有函數可以處理xml

這邊以本站的rss feed作例子

//取得xml檔
$xml_file='http://blog.hsin.tw/feed/';
//必須使用fopen開啟 不能直接用喔
$fp = fopen($xml_file,'r');
//這是php官網介紹使用外部連結時的fread方法
$contents = '';
while (!feof($fp)) {
$contents .= fread($fp, 8192);
}
//首先建立一個解析器,編碼不是必要的,這邊設定utf-8
$xp = xml_parser_create('utf-8');
//建立起始和終止元素處理器 下面函式的地方會講
xml_set_element_handler($xp,"startElement","endElement");
//建立資料處理器 下面函式的地方會講
xml_set_character_data_handler($xp,"characterData");
//開始解析xml檔
$result = xml_parse($xp,$contents);
//我是處理成以標籤為索引、內容為值的陣列,以print_r印出來看結果
print_r($_request);
//起始元素處理器
//當遇到xml檔裡面的每個標籤時,就會開始呼叫這個函式處理
//我這裡是把每個標籤名稱都換成小寫,待會給資料處理器使用
function startElement($parser,$tag,$atts)
{
global $_i,$_x,$_request;
$_x = strtolower($tag);
if($_x=='item')
++$_i;
}
//終止元素處理器
//當遇到xml檔裡面的每個標籤結束時,就會開始呼叫這個函式處理
//我這裡沒有作任何處理
function endElement($parser,$tag)
{}
//資料處理器
//會對每個標籤中的內容作處理
//這裡是把標籤名稱設為索引、內容設為值
function characterData($parser,$d)
{
global $_i,$_x,$_request;
if(trim($d)!='')
{
$_request[$_i][$_x]=$d;
}
}

2008年6月28日 星期六

php5 下讀取 XML

$string = "<tree>
<op_code>1002 </op_code>
<op_name>gxvps </op_name>
<op_user>2000000301 </op_user>
<op_time>2008-27-06 07:57:50 </op_time>
<sp_id>2000000301 </sp_id>
<package_id>9511869734 </package_id>
<ret_code>1 </ret_code>
<result>
<RepReserved1>100 </RepReserved1>
<RepReserved2>200 </RepReserved2>
<RepReserved3>300 </RepReserved3>
</result>
</tree>";
$xml = simplexml_load_string($string);

var_dump($xml);