PHPUnit का कौन सा संस्करण यह है? मुझे यकीन है कि हाल के संस्करण सभी डोम डॉक्यूमेंट तुलनाओं का समर्थन करते हैं।
लघु संस्करण: व्हाइटस्पेस को हटाने के लिए $doc->preserveWhiteSpace
सेटिंग का उपयोग करें, और फिर टिप्पणियों को रोकने के लिए $doc->C14N()
का उपयोग करें और एक स्ट्रिंग प्राप्त करें जिसका आप तुलना कर सकते हैं।
ठीक है, यहाँ एक स्क्रिप्ट आप के साथ खेल सकते है, ध्यान दें कि EOD;
लाइनों किसी भी अनुगामी या अग्रणी खाली स्थान के नहीं हो सकता।
$x1 = <<<EOD
<responses>
<response id="12">
<foo>bar</foo>
<lorem>ipsum</lorem>
<sit>dolor</sit>
<!--This is a comment -->
</response></responses>
EOD;
$x2 = <<<EOD
<responses>
<response id="12">
<lorem>ipsum</lorem><sit>dolor</sit>
<foo>bar</foo>
<!--This is another comment -->
</response>
</responses>
EOD;
// अगले ब्लॉक एक ही फाइल का हिस्सा है, मैं सिर्फ इतना है कि StackOverflow वाक्य रचना-प्रकाश डाला प्रणाली गला घोंटना नहीं है इस स्वरूपण ब्रेक बना रहा हूं।
$USE_C14N = true; // Try false, just to see the difference.
$d1 = new DOMDocument(1.0);
$d2 = new DOMDocument(1.0);
$d1->preserveWhiteSpace = false;
$d2->preserveWhiteSpace = false;
$d1->formatOutput = false; // Only useful for "pretty" output with saveXML()
$d2->formatOutput = false; // Only useful for "pretty" output with saveXML()
$d1->loadXML($x1); // Must be done AFTER preserveWhiteSpace and formatOutput are set
$d2->loadXML($x2); // Must be done AFTER preserveWhiteSpace and formatOutput are set
if($USE_C14N){
$s1 = $d1->C14N(true, false);
$s2 = $d2->C14N(true, false);
} else {
$s1 = $d1->saveXML();
$s2 = $d2->saveXML();
}
echo $s1 . "\n";
echo $s2 . "\n";
साथ $USE_C14N=false;
<?xml version="1.0"?>
<responses><response id="12"><foo>bar</foo><lorem>ipsum</lorem><sit>dolor</sit><!--This is a comment --></response></responses>
<?xml version="1.0"?>
<responses><response id="12"><lorem>ipsum</lorem><sit>dolor</sit><foo>bar</foo><!--This is another comment --></response></responses>
नोट के साथ $USE_C14N=true;
<responses><response id="12"><foo>bar</foo><lorem>ipsum</lorem><sit>dolor</sit></response></responses>
<responses><response id="12"><lorem>ipsum</lorem><sit>dolor</sit><foo>bar</foo></response></responses>
आउटपुट आउटपुट कि $doc->C14N()
धीमी हो सकती है, लेकिन मुझे लगता है कि यह संभावना है कि टिप्पणियों बाहर अलग करना वांछनीय है लगता है। ध्यान दें कि यह सब यह भी मानता है कि आपके एक्सएमएल में व्हाइटस्पेस महत्वपूर्ण नहीं है, और शायद कुछ उपयोग-मामले हैं जहां यह धारणा सही नहीं है ...
सभी सफेद रिक्त स्थान को हटाने और फिर sha1 हैश की तुलना करने के बारे में कैसे? –