PHPEye开源社区 » PHP周边技术讨论区 » 请问几个DOM Functions按属性操作XML的问题
《Programming PHP》第二版上市
2007-8-19 15:50 caoxk
请问几个DOM Functions按属性操作XML的问题

XML文件为Client.xml,内容如下
[code]
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Client [
<!ELEMENT  Client (Accounts)*>
<!ELEMENT Accounts (Group,Tag)>
<!ATTLIST Accounts Id  ID  #REQUIRED>
<!ELEMENT Group (#PCDATA)>
<!ELEMENT Tag (#PCDATA)>
]>
<Client>
    <Accounts Id="A1">
        <Group>0</Group>
        <Tag>自定义名称1</Tag>
    </Accounts>     
    <Accounts Id="A2">
         <Group>0</Group>
         <Tag>自定义名称2</Tag>
    </Accounts>     
</Client>
[/code]
问题如下:
1.怎么按以上规则增加一个Accounts 元素,设定属性Id="A3",Group子元素值为“1”,Tag子元素值为“自定义名称3”;
2.怎么删除属性为Id="A2" 的 Accounts 元素;
3.怎么分别修改属性为Id="A2" 的 Accounts 元素下的Group和Tag元素的值。
谢谢回复~~~~~~谢谢了!

[[i] 本帖最后由 caoxk 于 2007-8-19 08:53 编辑 [/i]]

2007-8-19 17:01 cid73
[php]
$domDoc = DOMDocument::loadXML($xml);
$rootNode = $domDoc->getElementsByTagName('Client')->item(0);

// 1.
$accounts = $domDoc->createElement('Accounts');
$accounts->setAttribute('Id', 'A3');
$group = $domDoc->createElement('Group', '1');
$tag = $domDoc->createElement('Tag', '自定义名称3');
$accounts->appendChild($group);
$accounts->appendChild($tag);
$rootNode->appendChild($accounts);

echo $domDoc->validate(), "\n";
echo $domDoc->saveXML();

// 3.
$A2 = $domDoc->getElementById('A2');
$A2->replaceChild(
  $domDoc->createElement('Group', '100'),
  $A2->getElementsByTagName('Group')->item(0)
);
$A2->replaceChild(
  $domDoc->createElement('Tag', '自定义名称200'),
  $A2->getElementsByTagName('Tag')->item(0)
);

echo $domDoc->validate(), "\n";
echo $domDoc->saveXML();

// 2.
$rootNode->removeChild($A2);

echo $domDoc->validate(), "\n";
echo $domDoc->saveXML();
[/php]
这些问题太基础, 我几乎是在背手册. 建议把手册中 XXX. DOM Functions 一章读熟

[[i] 本帖最后由 cid73 于 2007-8-19 17:06 编辑 [/i]]

2007-8-19 17:18 caoxk
回复 #2 cid73 的帖子

非常感谢,又帮了我一次大忙
手册看了,但由于都是英文的,几乎看不懂
以后我要多读手册,读不懂的就啃~~~

2007-8-20 20:41 sxpo
又见cid73老大

[url]http://www.infowe.com/dom/[/url]
中文DOM手册

2007-10-21 10:02 赤子乘龙
回复 #2 cid73 的帖子

老大,牛B啊!
不知道我什么时候有你那个水平。。羡慕。。。。
教教我怎么样?
联系QQ316510462

2007-10-23 17:03 fidy
:funk: :funk:  彻底崩溃了

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.