亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP - 刪除 XML 標簽中的前導和尾隨空格

PHP - 刪除 XML 標簽中的前導和尾隨空格

PHP
嗶嗶one 2023-10-22 22:02:28
如何刪除打開和關閉 XML 之間的前導和尾隨空格?$sampleXML = '<?xml version="1.0" encoding="ISO-8859-1"?>  <note>    <PersonName>        <GivenName> David </GivenName>        <MiddleName> Raj</MiddleName>        <Affix>JR</Affix>    </PersonName>    <Aliases>        <PersonName>            <GivenName></GivenName>            <MiddleName></MiddleName>            <FamilyName></FamilyName>        </PersonName>    </Aliases>    <DemographicDetail>        <GovernmentId countryCode="US">testIDs data  </GovernmentId>        <DateOfBirth>2000-12-12</DateOfBirth>    </DemographicDetail></note><anothertag>    <data type="credit">        <Vendor score="yes"> vendor name  </Vendor>    </data></anothertag>';$doc = new DOMDocument;$doc->loadXML($xml);foreach ($doc->documentElement->childNodes as $node) {}$xpath = new DOMXpath($doc);$xml = $doc->saveXML($doc, LIBXML_NOEMPTYTAG);我嘗試過使用 getElementsByTagName。但標簽名稱是動態的。所以在這種情況下它對我不起作用。他們在 php 類中有任何 bulid 嗎?
查看完整描述

2 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

您可以遍歷所有節點并修剪節點值,為此您需要一個遞歸函數來遍歷所有節點:


function trimNodes(DOMNode $node) {

  foreach ($node->childNodes as $child){

    if($child->hasChildNodes()) {

      trimNodes($child);

    } else{

      $child->nodeValue = trim($child->nodeValue);

    }

  }    

}

調用這個函數并將 $doc 發送給它,然后你將得到你想要的 XML。請注意您的 XML 需要有一個根節點。您當前有兩個根節點(另一個標簽,請注意),將它們包裝在一個根節點中。


查看完整回答
反對 回復 2023-10-22
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

如果$sampleXML只是一個字符串,那么我認為正則表達式可以為您提供您正在尋找的內容:


$pattern = '/(?<=\>)\s+(?=[a-zA-Z0-9,\.\_])|(?<=[a-zA-Z0-9,\.\_])\s+(?=\<)/';

$sampleXML = preg_replace($pattern, '', $sampleXML);


查看完整回答
反對 回復 2023-10-22
  • 2 回答
  • 0 關注
  • 173 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號