Back to Question Center
0

XML ਨੂੰ JSON- ਵਰਗੀ ਜਾਵਾਸਕ੍ਰਿਪਟ ਲਈ ਕਨਵਰਟ ਕਿਵੇਂ ਕਰਨਾ ਹੈ            ਇੱਕ JSON- ਵਰਗੀ ਜਾਵਾਸਕ੍ਰਿਪਡ XML ਨੂੰ ਕਨੌਏਲ ਕਿਵੇਂ ਕਰਨਾ ਹੈ

1 answers:
XML ਨੂੰ JSON- ਜਿਵੇਂ ਸਕਰਿਪਟ ਆਬਜੈਕਟ ਵਿੱਚ ਕਿਵੇਂ ਬਦਲਨਾ ਹੈ

ਮੇਰੇ ਪੋਸਟ ਵਿੱਚ PHP ਵਿੱਚ JSON ਪ੍ਰੌਕਸੀ ਸਰਵਰ ਲਈ ਇੱਕ XML ਕਿਵੇਂ ਬਣਾਉਣਾ ਹੈ ਅਸੀਂ ਇੱਕ ਅਜਿਹੀ ਪ੍ਰਣੈਕਟ ਤਿਆਰ ਕੀਤੀ ਹੈ ਜਿਸ ਵਿੱਚ ਐਮਐਮਐਸ ਸੁਨੇਹਿਆਂ ਦਾ ਅਨੁਵਾਦ ਐ Ajੈਕਸ-ready JSON ਵਿੱਚ ਕੀਤਾ ਗਿਆ ਸੀ. ਜੇਕਰ ਤੁਸੀਂ PHP ਜਾਂ ਕਿਸੇ ਹੋਰ ਢੁਕਵੇਂ ਸਰਵਰ-ਸਾਈਡ ਦੀ ਪ੍ਰਕਿਰਿਆ ਚਲਾ ਰਹੇ ਹੋ ਤਾਂ ਇਹ ਬਹੁਤ ਵਧੀਆ ਹੈ. ਪਰ ਜੇ ਤੁਸੀਂ ਸਿਰਫ ਮੀਮੈਂਟਲ ਤੱਕ ਹੀ ਸੀਮਿਤ ਰਹੇ ਹੋਵੋਗੇ?

ਰਲਵੇਂ ਇਕ XML ਦਸਤਾਵੇਜ਼ ਤੋਂ ਡੇਟਾ ਨੂੰ ਐਕਸੈਸ ਕਰਨਾ ਮਜ਼ੇਦਾਰ ਨਹੀਂ ਹੈ - 36 bar stool wood. ਤੁਸੀਂ DOM ਜਾਂ XPath ਵਿਧੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ, ਪਰ ਉਹ ਮੂਲ (JSON- ਤਿਆਰ) JavaScript ਔਬਜੈਕਟ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਜਿਵੇਂ ਕਿ myobj ਨਹੀਂ ਹਨ. ਸੂਚੀ [0] ਪ੍ਰਾਪਰਟੀ 1 ਜੇ ਤੁਸੀਂ ਅਕਸਰ ਉਸੇ ਐਮਐਮਐਮ ਡੌਕਯੂਮੈਂਟ ਦੇ ਡੇਟਾ ਤੱਕ ਪਹੁੰਚ ਕਰਦੇ ਹੋ, ਤਾਂ ਇਹ ਪਹਿਲੀ ਵਾਰ ਜਾਵਾਸਕ੍ਰਿਪਟ ਦੇ ਆਬਜੈਕਟ ਵਿੱਚ ਅਨੁਵਾਦ ਕਰਨ ਲਈ ਅਮਲੀ ਹੋ ਸਕਦਾ ਹੈ. ਕੁਝ ਕੋਡ ਲਿਖਣ ਲਈ ਤਿਆਰ ਹੋ? .

XML2jsobj ਫੰਕਸ਼ਨ

ਅਸੀਂ ਇੱਕ ਫੰਕਸ਼ਨ ਲਿਖਣ ਜਾ ਰਹੇ ਹਾਂ ਜੋ ਇੱਕ XML ਦਸਤਾਵੇਜ਼ ਦੇ DOM ਟ੍ਰੀ ਦੇ ਹਰੇਕ ਨੋਡ ਦਾ ਲਗਾਤਾਰ ਮੁੜ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਦਾ ਹੈ ਅਤੇ ਇੱਕ ਜਾਵਾਸਕ੍ਰਿਪਟ ਆਬਜੈਕਟ ਦਿੰਦਾ ਹੈ. ਫੰਕਸ਼ਨ ਨੂੰ ਇੱਕ ਸ਼ੁਰੂਆਤੀ ਨੋਡ ਪਾਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ - ਜੋ ਆਮ ਤੌਰ ਤੇ ਰੂਟ ਦਸਤਾਵੇਜ਼ ਹੋਵੇਗਾ ਸਮਾਲਟ - ਅਤੇ ਇੱਕ ਵਸਤੂ (ਅੰਦਰੂਨੀ ਤੌਰ ਤੇ ਨਾਮਿਤ ਡਾਟਾ) ਵਾਪਸ ਕਰਦਾ ਹੈ:

    
ਫੰਕਸ਼ਨ XML2jsobj (ਨੋਡ) {var ਡਾਟਾ = {};    

ਅਸੀਂ ਹੁਣ XML2jsobj ਦੇ ਅੰਦਰ ਐਡ ਫੰਕਸ਼ਨ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਾਂਗੇ. ਇਹ ਡਾਟਾ ਵਸਤੂ ਨੂੰ ਇੱਕ ਨਾਮ / ਮੁੱਲ ਜੋੜਾ ਜੋੜਦਾ ਹੈ, e. g ਡੇਟਾ [name] = ਮੁੱਲ ਮਿਡਲ, ਜੇਕਰ ਇਹ ਨਾਂ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ, ਤਾਂ ਇਸ ਨੂੰ ਡੈਟਾ [ਨਾਮ] ਤੋਂ ਐਰੇ ਵਿੱਚ ਬਦਲਣਾ ਚਾਹੀਦਾ ਹੈ ਤਾਂ ਕਿ ਦੋ ਜਾਂ ਵਧੇਰੇ ਮੁੱਲ ਲਾਗੂ ਕੀਤੇ ਜਾ ਸਕਣ:

    
// ਇੱਕ ਮੁੱਲ ਸ਼ਾਮਲ ਕਰੋ
ਫੰਕਸ਼ਨ ਸ਼ਾਮਿਲ (ਨਾਮ, ਮੁੱਲ) {
ਜੇ (ਡੇਟਾ [ਨਾਮ]) {
ਜੇ (ਡੇਟਾ [ਨਾਮ]. ਕੰਸਟ੍ਰੈਕਟਰ! = ਐਰੇ) {
ਡੇਟਾ [name] = [ਡਾਟਾ [ਨਾਮ]];
}
ਡੈਟਾ [ਨਾਮ] [ਡੇਟਾ [ਨਾਮ] ਲੰਬਾਈ] = ਮੁੱਲ;
}
ਹੋਰ {
ਡੇਟਾ [name] = value;
}
};    

ਹੁਣ ਸਾਨੂੰ XML ਨੋਡ ਦੇ ਗੁਣਾਂ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਇੱਕ ਲੂਪ ਦੀ ਲੋਡ਼ ਹੈ (ਐਡ -20 = "2">) ਅਤੇ ਐਡ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡੇਟਾ ਔਬਜੈਕਟ ਵਿੱਚ ਉਹਨਾਂ ਨੂੰ ਜੋੜੋ:

    
// ਤੱਤ ਗੁਣ
var c, cn;
ਲਈ (c = 0; cn = ਨੋਡ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ  
       

; c ++) {
ਸ਼ਾਮਲ ਕਰੋ (cn. ਨਾਮ, ਸੀ.ਐੱਨ. ਵੈਲਯੂ);
}

ਅਗਲਾ ਲੂਪ ਸਾਰੇ ਬਾਲ ਨੋਡਾਂ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ. ਟਿੱਪਣੀਆਂ ਅਤੇ ਸਫੈਦ ਥਾਂ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਪਰ, ਜੇ ਇੱਕ ਬੱਚੇ ਵਿੱਚ ਪਾਠ ਡੇਟਾ ਦਾ ਇੱਕ ਇਕਾਈ ਹੈ, ਤਾਂ ਇਸ ਨੂੰ ਐਡ ਰਾਹੀਂ ਡਾਟਾ ਆਬਜੈਕਟ ਨਾਲ ਜੋੜਿਆ ਗਿਆ ਹੈ. ਜੇ ਉਸ ਬੱਚੇ ਦੇ ਆਪਣੇ ਬੱਚੇ ਹਨ, ਤਾਂ ਅਸੀਂ ਆਬਜੈਕਟ ਬਣਾਉਣ ਲਈ ਮਿੱਠੇ ਨੂੰ ਮਿਲਾਉਂਦੇ ਹਾਂ:

    
// ਬਾਲ ਤੱਤ
ਲਈ (c = 0; cn = ਨੋਡ. ਬਾਲਨੌਡਜ਼  
       

; c ++) {
ਜੇ (cn. nodeType == 1) {
ਜੇ (cn. childNodes ਲੰਬਾਈ == 1 && cn. ਪਹਿਲੀਚੱਲਡ. ਨੋਡਟਾਈਪ == 3) {
// ਟੈਕਸਟ ਵੈਲਯੂ
ਸ਼ਾਮਲ ਕਰੋ (cn. NodeName, cn. Firstbild. NodeValue);
}
ਹੋਰ {
// ਸਬ-ਆਬਜੈਕਟ
ਸ਼ਾਮਲ ਕਰੋ (cn. NodeName, XML2jsobj (cn));
}
}
}

ਮਿਮਾਲਾ, ਅਸੀਂ ਡੇਟਾ ਔਬਜੈਕਟ ਨੂੰ ਸਾਡੇ ਕਾਲਿੰਗ ਫੰਕਸ਼ਨ ਵਿੱਚ ਵਾਪਸ ਕਰਦੇ ਹਾਂ:

    
ਰਿਟਰਨ ਡੇਟਾ;}    

XML ਨੂੰ ਬਦਲਣਾ

ਸਾਡੀ ਅਜੈਕਸ ਕਾਲ ਇੱਕ XML ਸੇਵਾ ਤੋਂ XML ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੀ ਹੈ:

    
// ਉਦਾਹਰਣ XML ਫੀਡ
var url = "ਉਦਾਹਰਨ. xml";// AJAX ਬੇਨਤੀ
var xhr = (ਵਿੰਡੋ. XMLHttpRequest? ਨਵਾਂ XMLHttpRequest   : ਨਵਾਂ ActiveXObject ("Microsoft. XMLHTTP"));
xhr onreadystatechange = XHRhandler;
xhr ਖੋਲੋ ("GET", url, true);
xhr ਭੇਜੋ (ਖਾਲੀ);    

ਸਾਡੀ XMLHttpRequest onreadystatechange ਹੈਂਡਲਰ ਨੂੰ XML ਡਾਟੇ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ ਅਤੇ ਇਸ ਨੂੰ ਸਿਮਟ ਵਸਤੂ ਵਿੱਚ ਬਦਲਦਾ ਹੈ:

    
// ਹੈਂਡਲ ਜਵਾਬ
ਫੰਕਸ਼ਨ XHRhandler    {ਜੇ (xhr. readyState == 4) {var obj = XML2jsobj (xhr. responseXML ਦਸਤਾਵੇਜ਼ ਦਸਤਾਵੇਜ਼);// ਸਾਡੇ ਵਾਪਸ ਆਏ ਡਾਟਾ ਨਾਲ ਕੁਝ ਕਰੋ . ਕੰਸੋਲ ਲਾਗ (obj);xhr = null;}}    

ਇਸ ਲਈ, ਜੇ ਉਦਾਹਰਨ ਲਈ. xml ਨੇ ਹੇਠ ਦਿੱਤੇ XML ਡਾਟਾ ਵਾਪਸ ਕੀਤਾ:

    



 1 
<ਪਾਠ> ਹੈਲੋ! 

    

ਸਿਮਲਟ) ਹੇਠ ਦਿੱਤੀ ਚੀਜ਼ ਵਾਪਸ ਕਰ ਦੇਵੇਗਾ:

    
{
ਸਥਿਤੀ: {
id: ["ਇਕ", 1],
ਪਾਠ: "ਹੈਲੋ!"
}
}    

ਇਸ ਲਈ ਤੁਸੀਂ obj ਵਰਤ ਸਕਦੇ ਹੋ. ਸਥਿਤੀ.

ਖਰੀਦਦਾਰ ਸਾਵਧਾਨ ਰਹੋ!

XML2jsobj ਬਾਰੇ ਕੁਝ ਨੋਟਾਂ:

  • XML ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਅਤੇ ਬਾਲ ਤੱਤਾਂ ਵਿਚਕਾਰ ਕੋਈ ਫਰਕ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ - ਜੇ ਉਹਨਾਂ ਦਾ ਸਮਾਨ ਨਾਮ ਹੈ, ਤਾਂ ਇਕਾਈ ਦੀ ਇਕ ਐਰੇਸਟੀਕਚਰ 0 ਦੇ ਅੰਕ ਨਾਲ ਵਾਪਸ ਕੀਤੀ ਜਾਏਗੀ.
  • XML2jsobj ਕੇਵਲ ਤਾਂ ਹੀ ਵਰਤਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ ਜਦੋਂ ਇਹ ਵਿਹਾਰਕ ਹੋਵੇ ਜੇ ਤੁਸੀਂ ਕੇਵਲ ਇੱਕ ਜਾਂ ਦੋ ਐਕਸਐਮਐਲ ਨੋਡ ਦੇ ਮੁੱਲ ਪ੍ਰਾਪਤ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਉਨ੍ਹਾਂ ਨੂੰ ਡੋਮ ਜਾਂ ਐਕਪੈਥ ਢੰਗਾਂ ਨਾਲ ਐਕਸੈਸ ਕਰਨਾ ਤੇਜ਼ੀ ਨਾਲ ਹੋ ਜਾਵੇਗਾ.
  • ਕੋਡ ਕਰਾਸ-ਬ੍ਰਾਉਜ਼ਰ ਅਨੁਕੂਲ ਹੈ (ਆਈ.ਆਈ. 6 ਸਮੇਤ) ਅਤੇ ਵੱਡੇ ਐੱਮ ਐੱਮ ਐੱਮ ਐੱਮ ਐੱਮ ਐੱਮ ਐੱਮ ਐੱਮ ਐੱਮ ਐੱਮ ਐੱਮ ਐੱਮ ਐੱਮ ਐੱਮ ਐੱਮ ਐੱਮ ਨੂੰ ਪ੍ਰਕਿਰਿਆ ਕਰ ਸਕਦਾ ਹੈ ਉਸ ਨੇ ਕਿਹਾ, ਇਹ ਹਰ ਸਥਿਤੀ ਲਈ ਢੁਕਵਾਂ ਨਹੀਂ ਹੋ ਸਕਦਾ. ਇਹ ਸੰਭਵ ਹੈ ਕਿ ਤੁਹਾਡੇ ਸਰਵਰ ਤੋਂ JSON ਵਾਪਸ ਕਰਨ ਲਈ ਤਰਜੀਹ ਵਿੱਚ ਨਹੀਂ ਵਰਤਿਆ ਜਾਣਾ ਚਾਹੀਦਾ.
  • ਕੋਡ ਗੈਬ ਕਰੋ

    ਕਿਰਪਾ ਕਰਕੇ ਪ੍ਰਦਰਸ਼ਨ ਪੇਜ ਨੂੰ ਵੇਖੋ ਜਾਂ ਆਪਣੇ ਖੁਦ ਦੇ ਪ੍ਰਾਜੈਕਟਾਂ ਲਈ ਕੋਡ ਅਤੇ ਉਦਾਹਰਨਾਂ ਡਾਊਨਲੋਡ ਕਰੋ.

    ਮੈਨੂੰ ਆਸ ਹੈ ਕਿ ਤੁਸੀਂ ਇਸ ਨੂੰ ਲਾਭਦਾਇਕ ਲਗੋ - ਮੈਨੂੰ ਦੱਸ ਦਿਓ ਕਿ ਕੁਝ ਐਮਐਮਐਮ ਸਿਰ ਦਰਦ ਠੀਕ ਹੋ ਜਾਂਦੇ ਹਨ!

    March 1, 2018