導航:首頁 > 編程語言 > phpjson轉換xml

phpjson轉換xml

發布時間:2024-03-27 04:22:06

⑴ 如何在JS中實現相互轉換XML和JSON

JSON與XML的區別比較

1.定義介紹

(1).XML定義

擴展標記語言 (Extensible Markup Language, XML)
,用於標記電子文件使其具有結構性的標記語言,可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。
XML使用DTD(document type definition)文檔類型定義來組織數據;格式統一,跨平台和語言,早已成為業界公認的標准。
XML是標准通用標記語言 (SGML) 的子集,非常適合 Web 傳輸。XML 提供統一的方法來描述和交換獨立於應用程序或供應商的結構化數據。

(2).JSON定義

JSON(javaScript Object
Notation)一種輕量級的數據交換格式,具有良好的可讀和便於快速編寫的特性。可在不同平台之間進行數據交換。JSON採用兼容性很高的、完全獨立於語言文本格式,同時也具備類似於C語言的習慣(包括C,
C++, C#, Java, JavaScript, Perl, Python等)體系的行為。這些特性使JSON成為理想的數據交換語言。
JSON基於JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一個子集。

2.XML和JSON優缺點

(1).XML的優缺點

<1>.XML的優點
A.格式統一,符合標准;
B.容易與其他系統進行遠程交互,數據共享比較方便。

<2>.XML的缺點
A.XML文件龐大,文件格式復雜,傳輸占帶寬;
B.伺服器端和客戶端都需要花費大量代碼來解析XML,導致伺服器端和客戶端代碼變得異常復雜且不易維護;
C.客戶端不同瀏覽器之間解析XML的方式不一致,需要重復編寫很多代碼;
D.伺服器端和客戶端解析XML花費較多的資源和時間。

(2).JSON的優缺點

<1>.JSON的優點:
A.數據格式比較簡單,易於讀寫,格式都是壓縮的,佔用帶寬小;

B.易於解析,客戶端JavaScript可以簡單的通過eval()進行JSON數據的讀取;

C.支持多種語言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, php, Python, Ruby等伺服器端語言,便於伺服器端的解析;

D.在PHP世界,已經有PHP-JSON和JSON-PHP出現了,偏於PHP序列化後的程序直接調用,PHP伺服器端的對象、數組等能直接生成JSON格式,便於客戶端的訪問提取;

E.因為JSON格式能直接為伺服器端代碼使用,大大簡化了伺服器端和客戶端的代碼開發量,且完成任務不變,並且易於維護。

<2>.JSON的缺點

A.沒有XML格式這么推廣的深入人心和喜用廣泛,沒有XML那麼通用性;

B.JSON格式目前在Web Service中推廣還屬於初級階段。

在Javascript中實現XML和JSON相互轉換

先看調用例子:

復制代碼 代碼如下:

<viewport id="menuPane" layout="border">
<panel region="center" border="0" layout="border">
<tbar>
<toolbar text="XXXX">
<menu>
<text text="11">
</text>
<text text="22">
</text>
<text text="33">
</text>
</menu>
</toolbar>
<toolbar text="XXXX">
<menu>
<text text="44">
</text>
<text text="55">
</text>
<menu>
<text text="6 6">
</text>
</menu>
<text text="77">
</text>
</menu>
</toolbar>
</tbar>
</panel>
</viewport>
var xmlParser = new XmlToJson();
var json = xmlParser.parse(xml);
console.log( JSON.stringify(json) );
var jsonParser = new JsonToXml();
var xml = jsonParser.parse(json);
console.log( xml );

XML轉換為JSON:

復制代碼 代碼如下:

function XmlToJson() {
}
XmlToJson.prototype.setXml = function(xml) {
if(xml && typeof xml == "string") {
this.xml = document.createElement("div");
this.xml.innerHTML = xml;
this.xml = this.xml.getElementsByTagName("*")[0];
}
else if(typeof xml == "object"){
this.xml = xml;
}
};
XmlToJson.prototype.getXml = function() {
return this.xml;
};
XmlToJson.prototype.parse = function(xml) {
this.setXml(xml);
return this.convert(this.xml);
};
XmlToJson.prototype.convert = function(xml) {
if (xml.nodeType != 1) {
return null;
}
var obj = {};
obj.xtype = xml.nodeName.toLowerCase();
var nodeValue = (xml.textContent || "").replace(/(\r|\n)/g, "").replace(/^\s+|\s+$/g, "");

if(nodeValue && xml.childNodes.length == 1) {
obj.text = nodeValue;
}
if (xml.attributes.length > 0) {
for (var j = 0; j < xml.attributes.length; j++) {
var attribute = xml.attributes.item(j);
obj[attribute.nodeName] = attribute.nodeValue;
}
}
if (xml.childNodes.length > 0) {
var items = [];
for(var i = 0; i < xml.childNodes.length; i++) {
var node = xml.childNodes.item(i);
var item = this.convert(node);
if(item) {
items.push(item);
}
}
if(items.length > 0) {
obj.items = items;
}
}
return obj;
};

JSON轉換為XML:

復制代碼 代碼如下:

function JsonToXml() {
this.result = [];
}
JsonToXml.prototype.spacialChars = ["&","<",">","\"","'"];
JsonToXml.prototype.validChars = ["&","<",">",""","'"];
JsonToXml.prototype.toString = function(){
return this.result.join("");
};
JsonToXml.prototype.replaceSpecialChar = function(s){
for(var i=0;i<this.spacialChars.length;i++){
s=s.replace(new RegExp(this.spacialChars[i],"g"),this.validChars[i]);
}
return s;
};
JsonToXml.prototype.appendText = function(s){
s = this.replaceSpecialChar(s);
this.result.push(s);
};
JsonToXml.prototype.appendAttr = function(key, value){
this.result.push(" "+ key +"=\""+ value +"\"");
};
JsonToXml.prototype.appendFlagBeginS = function(s){
this.result.push("<"+s);
};
JsonToXml.prototype.appendFlagBeginE = function(){
this.result.push(">");
};
JsonToXml.prototype.appendFlagEnd = function(s){
this.result.push("</"+s+">");
};
JsonToXml.prototype.parse = function(json){
this.convert(json);
return this.toString();
};
JsonToXml.prototype.convert = function(obj) {
var nodeName = obj.xtype || "item";
this.appendFlagBeginS(nodeName);
var arrayMap = {};
for(var key in obj) {
var item = obj[key];
if(key == "xtype") {
continue;
}
if(item.constructor == String) {
this.appendAttr(key, item);
}
if(item.constructor == Array) {
arrayMap[key] = item;
}
}
this.appendFlagBeginE();
for(var key in arrayMap) {
var items = arrayMap[key];
for(var i=0;i<items.length;i++) {
this.convert(items[i]);
}
}
this.appendFlagEnd(nodeName);
};

以上就是為大家整理的在Javascript中實現XML和JSON相互轉換,希望本文所述對大家學習javascript有所幫助。

⑵ c#怎麼將json轉換成xml

///<summary>
///json字元串轉換為Xml對象
///</summary>
///<paramname="sJson"></param>
///<returns></returns>
(stringsJson)
{
//XmlDictionaryReaderreader=JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(sJson),XmlDictionaryReaderQuotas.Max);
//XmlDocumentdoc=newXmlDocument();
//doc.Load(reader);

=newJavaScriptSerializer();
Dictionary<string,object>Dic=(Dictionary<string,object>)oSerializer.DeserializeObject(sJson);
XmlDocumentdoc=newXmlDocument();
XmlDeclarationxmlDec;
xmlDec=doc.CreateXmlDeclaration("1.0","gb2312","yes");
doc.InsertBefore(xmlDec,doc.DocumentElement);
XmlElementnRoot=doc.CreateElement("root");
doc.AppendChild(nRoot);
foreach(KeyValuePair<string,object>iteminDic)
{
XmlElementelement=doc.CreateElement(item.Key);
KeyValue2Xml(element,item);
nRoot.AppendChild(element);
}
returndoc;
}

privatestaticvoidKeyValue2Xml(XmlElementnode,KeyValuePair<string,object>Source)
{
objectkValue=Source.Value;
if(kValue.GetType()==typeof(Dictionary<string,object>))
{
foreach(KeyValuePair<string,object>iteminkValueasDictionary<string,object>)
{
XmlElementelement=node.OwnerDocument.CreateElement(item.Key);
KeyValue2Xml(element,item);
node.AppendChild(element);
}
}
elseif(kValue.GetType()==typeof(object[]))
{
object[]o=kValueasobject[];
for(inti=0;i<o.Length;i++)
{
XmlElementxitem=node.OwnerDocument.CreateElement("Item");
KeyValuePair<string,object>item=newKeyValuePair<string,object>("Item",o[i]);
KeyValue2Xml(xitem,item);
node.AppendChild(xitem);
}

}
else
{
XmlTexttext=node.OwnerDocument.CreateTextNode(kValue.ToString());
node.AppendChild(text);
}
}

⑶ 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;
}

閱讀全文

與phpjson轉換xml相關的資料

熱點內容
十大封禁鬼片國產 瀏覽:559
華為可編程路由器 瀏覽:568
模具數控編程ug 瀏覽:186
php聲明json 瀏覽:272
android編譯系統apk 瀏覽:809
3dm解壓縮密碼 瀏覽:472
安卓如何截屏到手機 瀏覽:995
多空資金指標公式源碼精準買點 瀏覽:228
匿名投票小程序源碼 瀏覽:1002
java運行監控 瀏覽:234
成都做程序員之都 瀏覽:538
光纖輸出的是源碼還是pcm 瀏覽:144
pdf格式列印出來是白紙 瀏覽:314
主人公叫葉天明柳韶的小說 瀏覽:74
愛戀一樣電影 瀏覽:661
叮咚浩哥電影叫什麼 瀏覽:675
新世界電訊伺服器怎麼樣 瀏覽:126
美國科幻片機器人 瀏覽:104
韓國推理劇愛情電影 瀏覽:757
電視機上app自動扣費哪裡關 瀏覽:44