क्या कोई फ़ंक्शन है जो PHP से स्ट्रिंग बनाता है SimpleXMLElement
?
जवाबों:
आप इसे SimpleXMLElement::asXML()
पूरा करने के लिए विधि का उपयोग कर सकते हैं :
$string = "<element><child>Hello World</child></element>";
$xml = new SimpleXMLElement($string);
// The entire XML tree as a string:
// "<element><child>Hello World</child></element>"
$xml->asXML();
// Just the child node as a string:
// "<child>Hello World</child>"
$xml->child->asXML();
$string = $xml->child->__toString();
वास्तव में asXML () स्ट्रिंग को xml में रूपांतरित करता है क्योंकि यह नाम कहता है:
<id>5</id>
यह सामान्य रूप से एक वेब पेज पर प्रदर्शित होगा, लेकिन जब आप कुछ और के साथ मूल्यों का मिलान करते हैं तो यह समस्या पैदा करेगा।
आप फ़ील्ड का वास्तविक मान प्राप्त करने के लिए strip_tags फ़ंक्शन का उपयोग कर सकते हैं:
$newString = strip_tags($xml->asXML());
पुनश्च: यदि आप पूर्णांक या फ्लोटिंग नंबरों के साथ काम कर रहे हैं, तो आपको इसे इंटीजर () या फ्लोटवल () के साथ पूर्णांक में बदलने की आवश्यकता है ।
$newNumber = intval(strip_tags($xml->asXML()));
आप उपयोग कर सकते हैं ->child
एक बच्चे तत्व नामित पाने के लिए बच्चे ।
इस तत्व में बच्चे का पाठ होगा तत्व ।
लेकिन अगर आप कोशिश करते हैं var_dump()
उस चर पर , तो आप देखेंगे कि यह वास्तव में एक PHP स्ट्रिंग नहीं है।
इसके आस-पास सबसे आसान तरीका है एक प्रदर्शन करना strval(xml->child);
कि इसे वास्तविक PHP स्ट्रिंग में बदल दिया जाएगा।
अपने XML को लूप करते समय और उपयोग करते समय डिबगिंग के समय यह उपयोगी है var_dump()
परिणाम की जांच करने के लिए ।
तो $s = strval($xml->child);
।
यहाँ एक फ़ंक्शन है जिसे मैंने इस मुद्दे को हल करने के लिए लिखा है (यह मानते हुए टैग में कोई विशेषता नहीं है)। यह फ़ंक्शन HTML फॉर्मेटिंग नोड में रखेगा:
function getAsXMLContent($xmlElement)
{
$content=$xmlElement->asXML();
$end=strpos($content,'>');
if ($end!==false)
{
$tag=substr($content, 1, $end-1);
return str_replace(array('<'.$tag.'>', '</'.$tag.'>'), '', $content);
}
else
return '';
}
$string = "<element><child>Hello World</child></element>";
$xml = new SimpleXMLElement($string);
echo getAsXMLContent($xml->child); // prints Hello World
कभी-कभी आप बस टाइपकास्ट कर सकते हैं:
// this is the value of my $xml
object(SimpleXMLElement)#10227 (1) {
[0]=>
string(2) "en"
}
$s = (string) $xml; // returns "en";
$xmlitem->description
। धन्यवाद।
संभवतः XML फ़ीड के आधार पर आपको उपयोग करने की आवश्यकता हो सकती है / नहीं __toString()
; मुझे इसका उपयोग करना पड़ा __toString()
अन्यथा यह स्ट्रिंग को एक SimpleXMLElement के अंदर लौटा रहा है। हो सकता है कि मुझे इस वस्तु को और नीचे लाने की आवश्यकता हो ...