我有这段代码
$XMLTranslationObject = new DOMDocument();
$XMLTranslationObject->load("../xdata/xml/translation/en-US/profile.xml");
$Xpath = new DOMXpath($XMLTranslationObject);
$Result = $Xpath->evaluate("Field[@Name = 'AttachedFiles']")->nodeValue;
echo $Result;
和xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<Translation language="en-US">
<!-- Basic Begin -->
<Field Name="SiteName">Brainfavor</Field>
<Field Name="Error">Error</Field>
<!-- Basic End -->
<!-- Header Begin -->
<Field Name="Name">Name</Field>
<Field Name="WorkingAt">Working at</Field>
<Field Name="Phone">Phone</Field>
女巫给了我以下错误
注意:未定义的属性:第30行的C:\ xampp \ htdocs \ brainbook \ profile \ loadmore.php中的DOMNodeList :: $ nodeValue
我想要的只是检索字段名为AttachedFiles
的行的值,只需运行一个简单的Xpath查询并检索结果。使用XSLT很容易
<xsl:value-of select="$TranslationProfile/Field[@Name = 'AttachedFiles']"/>
但我之前没有使用PHP Xpath。
答案 0 :(得分:2)
正确的配方是
$Xpath->evaluate("string(Field[@Name = 'AttachedFiles'])");
这是有效的,因为string
函数将节点集(在这种情况下实际上只包含一个节点)转换为集合中第一个节点的值。
警告:这意味着如果有多个元素与查询匹配,则只有第一个元素(按文档顺序)将返回其值。