PHP - 删除 XML 标签中的前导和尾随空格

如何删除打开和关闭 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 吗?


哔哔one
浏览 78回答 2
2回答

呼如林

您可以遍历所有节点并修剪节点值,为此您需要一个递归函数来遍历所有节点:function trimNodes(DOMNode $node) {&nbsp; foreach ($node->childNodes as $child){&nbsp; &nbsp; if($child->hasChildNodes()) {&nbsp; &nbsp; &nbsp; trimNodes($child);&nbsp; &nbsp; } else{&nbsp; &nbsp; &nbsp; $child->nodeValue = trim($child->nodeValue);&nbsp; &nbsp; }&nbsp; }&nbsp; &nbsp;&nbsp;}调用这个函数并将 $doc 发送给它,然后你将得到你想要的 XML。请注意您的 XML 需要有一个根节点。您当前有两个根节点(另一个标签,请注意),将它们包装在一个根节点中。

慕桂英3389331

如果$sampleXML只是一个字符串,那么我认为正则表达式可以为您提供您正在寻找的内容:$pattern = '/(?<=\>)\s+(?=[a-zA-Z0-9,\.\_])|(?<=[a-zA-Z0-9,\.\_])\s+(?=\<)/';$sampleXML = preg_replace($pattern, '', $sampleXML);
打开App,查看更多内容
随时随地看视频慕课网APP