我知道这个讨论已经被覆盖了,我已经尝试过这里的每一个建议,但我似乎无法从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的新手。
答案 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;
?>