我使用的SimpleXML读取XML文件。 到目前为止,我无法获取属性值我要找的。 这是我的代码。
if(file_exists($xmlfile)){
$doc = new DOMDocument();
$doc->load($xmlfile);
$usergroup = $doc->getElementsByTagName( "preset" );
foreach($usergroup as $group){
$pname = $group->getElementsByTagName( "name" );
$att = 'code';
$name = $pname->attributes()->$att; //not working
$name = $pname->getAttribute('code'); //not working
if($name==$preset_name){
echo($name);
$group->parentNode->removeChild($group);
}
}
}
和我的XML文件的样子
<presets>
<preset>
<name code="default">Default</name>
<createdBy>named</createdBy>
<icons>somethignhere</icons>
</preset>
</presets>
尝试这个 :
function getByPattern($pattern, $source)
{
$dom = new DOMDocument();
@$dom->loadHTML($source);
$xpath = new DOMXPath($dom);
$result = $xpath->evaluate($pattern);
return $result;
}
并且你可以用它喜欢的(使用XPath
):
$data = getByPattern("/regions/testclass1/presets/preset",$xml);
UPDATE
代码:
<?php
$xmlstr = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><presets><preset><name code=\"default\">Default</name><createdBy>named</createdBy><icons>somethignhere</icons></preset></presets>";
$xml = new SimpleXMLElement($xmlstr);
$result = $xml->xpath("/presets/preset/name");
foreach($result[0]->attributes() as $a => $b) {
echo $a,'="',$b,"\"\n";
}
?>
输出:
code="default"
PS并且还尝试接受的答案为@TJHeuvel提到的; 它是你尊重社区的指示(和社区会更乐意多,接下来的时间帮你...)
在我的头上居然质疑包括删除一个节点,以及,误我不能添加。 所以我的观点是这样的完整的答案,IA情况下,如果别人发现这很有用。 这个答案不包括的SimpleXMLElement类,因为如何努力,我想它不删除与该节点未设置(); 。 所以回到我在那里,我终于找到了答案。 这是我的代码。 和它的简单!
if(file_exists($xmlfile)){
$doc = new DOMDocument();
$doc->load($xmlfile);
$presetgroup = $doc->getElementsByTagName( "preset" );
foreach($presetgroup as $group){
$pname = $group->getElementsByTagName( "name" );
$pcode = $pname->item(0)->getAttribute('code');
if($pcode==$preset_name){
echo($preset_name);
$group->parentNode->removeChild($group);
}
}
}
$doc->save($xmlfile);