2016-07-20 15 views
2

タグから空のxmlnsを削除する方法を試しましたが、この問題を解決するのに役立ちます。PHPを使用して空のxmlns = ""属性を削除

$XMLDoc = new DOMDocument('1.0', 'UTF-8'); 
$XMLDoc->preserveWhiteSpace = false; 
$XMLDoc->formatOutput = true; 
$soap = $XMLDoc->createElementNS('http://schemas.xmlsoap.org/soap/envelope/', 'soap:Envelope'); 
$XMLDoc->appendChild($soap); 
$soap->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); 
$soap->setAttributeNS('http://www.w3.org/2000/xmlns/' ,'xmlns:xsd', 'http://www.w3.org/2001/XMLSchema'); 
$soap->setAttributeNS('http://www.w3.org/2000/xmlns/' ,'xmlns:soap', 'http://schemas.xmlsoap.org/soap/envelope/'); 
$body = $XMLDoc->createElementNS('http://schemas.xmlsoap.org/soap/envelope/', 'soap:Body'); 
$XMLDoc->appendChild($body); 
include 'DBDetails.php'; 
$XMlQuery="SELECT `First_Name`, `Last_Name`, `Email`, `Pan_No`, `Res_address`, `Res_address2`, `Res_address3`, `Resi_type`, `Mobile`, `Res_City`, `Resi_City_other`, `Resi_City_other1`, `res_pin`, `Company_name`, `DateOfBirth`, `Designation`, `Emp_type`, `Monthly_income`, `card_held`, `Source_code`, `Promo_code`, `LEAD_DATE_TIME`, `PRODUCT_APPLIED_FOR`, `existingcust`, `LoanAmt`, `YrsinEmp`, `emi_paid`, `car_make`, `car_model`, `TypeOfLoan`, `IP_Address`, `Indigo_UniqueKey`, `Indigo_RequestFromYesNo` FROM `webservice` WHERE `Source_code` LIKE '$Sourcecode'"; 
$rowcount=-1; 
if($result=mysqli_query($conn,$XMlQuery)) { 
$rowcount=mysqli_num_rows($result); 
} 
if($rowcount>0){ 
$StockCount=-1; 
$rootElement = $XMLDoc->createElement('AddDetails'); 
$rootNode=$body->appendChild($rootElement); 
while($result_array = $result->fetch_assoc()) { 
$StockCount++; 
foreach($result_array as $key => $value) { 
$value=trim($value); 
if($value=="NULL" || $value=="" ||$value==-1){ 
$value=""; 
} 
$rootNode->appendChild($XMLDoc->createElement($key,$value)); 
} 
} 
mysqli_close($conn); 
} 
$XSLDoc = new DOMDocument('1.0', 'UTF-8'); 
$xslstr = '<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
     <xsl:output version="1.0" encoding="UTF-8" indent="yes" /> 
     <xsl:strip-space elements="*" />     
      <xsl:template match="/">  
       <xsl:apply-templates select="@*|node()" />  
      </xsl:template>     
      <xsl:template match="AddDetails"> 
      <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
          xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
       <soap:Body> 
       <AddDetails xmlns="http://tempuri.org/"> 
        <xsl:copy-of select="*" /> 
       </AddDetails> 
       </soap:Body> 
      </soap:Envelope> 
      </xsl:template>     
     </xsl:transform>'; 
$XSLDoc->loadXML($xslstr); 
$proc = new XSLTProcessor; 
$proc->importStyleSheet($XSLDoc); 
$newXML = $proc->transformToXML($XMLDoc); 
echo $newXML; 

私がこの

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
<soap:Body> 
<AddDetails xmlns="http://tempuri.org/"> 
<First_Name>TestFName</First_Name> 
<Last_Name>TestLName</Last_Name> 
<Email>[email protected]</Email> 
</AddDetails> 
</soap:Body> 
</soap:Envelope> 

のようなXMLを生成したい

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
<soap:Body> 
<AddDetails xmlns="http://tempuri.org/"> 
<First_Name xmlns="">TestFName</First_Name> 
<Last_Name xmlns="">TestLName</Last_Name> 
<Email xmlns="">[email protected]</Email> 
</AddDetails> 
</soap:Body> 
</soap:Envelope> 

として出ただ、私を助けてください。私は空のxmlnsなしでコードを生成したい。

答えて

0

素早く汚れたパッチ。ただ、最後の行の前に

​​

は、これを追加します。

$newXML = str_replace('xmlns=""', '', $newXML); 
+0

を空白のxmlnsを解決する必要があります!空のデフォルトxmlns属性を避けるために、同じxmlns文をXSLT文字列に追加する必要があります。 – 4levels

0

これは、あなたのXSLT文字列に欠落している名前空間宣言によって引き起こされます。

XMLドキュメントの名前空間がXSLTドキュメントに追加されていない場合、プロセッサは空白のデフォルトxmlns属性を追加します。あなたのXSLT文字列にXMLファイルからのすべての名前空間を追加する

てみてください、これはこれは、単にクリーンアップソリューションではありません..問題を属性

関連する問題