मेरे पास एक एक्सएमएल फ़ाइल है जो इस तरह दिखती है:

<?xml version="1.0" encoding="UTF-8"?>
<facilities>
    <areas>
        <area name="Rocket">
            <trails>
                <trail name="This Skiway" status="CLOSED" difficulty="novice"/>
            </trails>
        </area>
    </areas>
</facilities>

मैं विशेषताओं को एक रूप में दिखाने की कोशिश कर रहा हूं ताकि मैं उन्हें बदल सकूं। मुझे getElementsbyTagName और टैग के अंदर सामग्री को बदलने में सफलता मिली है, लेकिन जब मैं XPath पेश करता हूं और विशेषताओं को प्रतिस्थापित करने का प्रयास करता हूं तो यह काम नहीं करता है।

मैं जिस कोड का उपयोग कर रहा हूं वह यह है:

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
 <?php
 $xml = new DOMDocument('1.0', 'utf-8');
 $xml->formatOutput = true; 
 $xml->preserveWhiteSpace = false;
 $xml->load('examples.xml');

 $xpath = new DOMXpath($xml);

 $name = $xpath->query("/facilities/areas/area[@name='Rocket']/trails/trail[@name='This Skiway']/@name")->item(0);
 $status = $xpath->query("/facilities/areas/area[@name='Rocket']/trails/trail[@name='This Skiway']/@status")->item(0);

 $xpath->replaceChild($name, $name);
 $xpath->replaceChild($status, $status);
 ?>

 <?php
 if (isset($_POST['submit']))
 {
$name->nodeValue = $_POST['namanya'];
$status->nodeValue = $_POST['statusnya'];
htmlentities($xml->save('examples.xml'));

 }

 ?>

<form method="POST" action=''>
  name <input type="text-name" value="<?php echo $name->nodeValue  ?>" name="namanya" />

<span><label for='statusnya'>status </label>
<select name="statusnya" id="statusnya">
<option selected value="<?php echo $status->nodeValue  ?>"><?php echo $status->nodeValue  ?></option>
<option value="OPEN">OPEN</option>
<option value="CLOSED">CLOSED</option>
<option value="RACING CLOSURE">RACING CLOSURE</option>
</select></span>

<input name="submit" type="submit" />
</form>

मुझे यकीन नहीं है कि मैं यहां क्या गलत कर रहा हूं लेकिन मुझे लगता है कि मेरी xpath क्वेरी किसी भी तरह खराब है। बहुत धन्यवाद!

1
eleytheria 11 जून 2019, 20:26

1 उत्तर

सबसे बढ़िया उत्तर

निगेल रेन ने जो उत्तर सुझाया था, वह केवल इन दो पंक्तियों को हटाने के लिए था, क्योंकि वे अब लागू नहीं होते हैं:

 $xpath->replaceChild($name, $name);
 $xpath->replaceChild($status, $status);
0
eleytheria 12 जून 2019, 01:50