用php简单的xml更新

时间:2011-07-15 19:40:04

标签: xml

我知道这个讨论已经被覆盖了,我已经尝试过这里的每一个建议,但我似乎无法从php中读取xml文件。我只是想通过id读取标签的内容。这是xml:

的test.xml

<?xml version="1.0" encoding="UTF-8"?>
<queries>
    <sql id="one">here is the first one</sql>
    <sql id="two">here is the second one</sql>
</queries>

我只是想用这个来读:

<?php
$dom = new DOMDocument;
$dom->validateOnParse = TRUE;
$dom->loadXML('test.xml');
$node = $dom->getElementById('one');
echo $node->nodeValue;
?>

为什么世界上不能让这个工作?对不起,这个问题很新,但我是php的新手。

2 个答案:

答案 0 :(得分:0)

您需要使用DOMElement::setIDAttribute设置ID属性,或使用DTD定义属性类型ID的DTD(您的示例不包括)。

最终代码:

<?php
$dom = new DOMDocument;
$dom->validateOnParse = TRUE;
$dom->loadXML('test.xml');
$dom->setIdAttribute("id",true);
$node = $dom->getElementById('one');
echo $node->nodeValue;
?>

答案 1 :(得分:0)

getElementById()在PHP中的工作方式与在JavaScript中的工作方式不同,documentation会解释。如果您不想在代码中设置ID,另一种“按ID查找”的方法是使用XPath:

<?php
$dom = new DOMDocument;
$dom->validateOnParse = TRUE;
$dom->loadXML('test.xml');

$dxp = new DOMXPath($dom);
$result = $dxp->query('//sql[@id = "one"]');
$node = $result->item(0);
echo $node->nodeValue;
?>