如何刪除打開和關閉 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 需要有一個根節點。您當前有兩個根節點(另一個標簽,請注意),將它們包裝在一個根節點中。

慕桂英3389331
TA貢獻2036條經驗 獲得超8個贊
如果$sampleXML只是一個字符串,那么我認為正則表達式可以為您提供您正在尋找的內容:
$pattern = '/(?<=\>)\s+(?=[a-zA-Z0-9,\.\_])|(?<=[a-zA-Z0-9,\.\_])\s+(?=\<)/';
$sampleXML = preg_replace($pattern, '', $sampleXML);
- 2 回答
- 0 關注
- 173 瀏覽
添加回答
舉報
0/150
提交
取消