1

我正在尝试使用 DOMDocument 修改 xml 文件。我所拥有的正在工作,但它对 xml 文件的修改比我要求的要多。

代码:

$sDB = $this->oDB->getDBName();
$file = 'test.xml';

// Load XML
$dom = new DOMDocument;
$dom->preserveWhiteSpace = true;
$dom->formatOutput = false;
$dom->validateOnParse = false;
$dom->load($file);

// Find TEST Node
$nodes = $dom->getElementsByTagName('parameter');
foreach($nodes as $node)
{
    if($node->getAttribute('name') == 'TEST')
    {
        $sBDC = $node->nodeValue;
        $aBDC = explode(',',$sBDC);
        if(!in_array($sDB,$aBDC))
            array_push($aBDC,$sDB);
        $sBDC = implode(',',$aBDC);
        $node->nodeValue = $sBDC;
        $dom->save($file);
        break;
    }
}

一些 XML:

<parameter name="Integration" username="testuser" password="testpassword">/parameter>
<parameter name="API">accept.php</parameter>
<parameter name="TRANSFER" username="admin" password="letmein" />
<parameter name="TEST">dbname</parameter>

问题:

它添加<?xml version="1.0"?>到 XML 文件的开头,并<parameter>通过在没有值的情况下将任何不必要的结束标记内联来修改一些元素。例如<parameter name="email"></parameter>会变成<parameter name="email" />. 它还删除了元素中一些其他不必要的空白。

虽然我的直觉告诉我这些变化不会伤害任何东西,但如果发生的唯一变化是预期的变化,我会对此感到更自在。不幸的是,如果有一些代码埋在某个地方,实际上是在寻找这些不必要的空白,我不会感到惊讶。

4

1 回答 1

1

那么,一个有效的 XML 文件将具有 XML 定义。此外,您可以通过LIBXML_NOEMPTYTAGsave().

于 2013-10-04T13:30:32.027 回答