我需要修改现有的xml文件。实际文件如下所示:
<person id="1">
<address>Fr.</address>
<titles/>
<firstname>Mary</firstname>
<lastname>Müller</lastname>
<gender>F</gender>
<profession/>
<references>
<reference>
<positions>
<position>68-590-1</position>
<position>68-590-2</position>
</positions>
<positions>
<position>68-590-6</position>
<position>68-590-7</position>
</positions>
</reference>
</references>
</person>
我的问题是:如何读取此类文件然后添加信息。例如,如果该人具有专业&#34;教授&#34;,(写在12-122-3位),则修改后的xml应如下所示:
<person id="1">
<address>Fr.</address>
<titles/>
<firstname>Mary</firstname>
<lastname>Müller</lastname>
<gender>F</gender>
<profession>professor</profession>
<references>
<reference>
<positions>
<position>12-122-3</position>
</positions>
<positions>
<position>68-590-1</position>
<position>68-590-2</position>
</positions>
<positions>
<position>68-590-6</position>
<position>68-590-7</position>
</positions>
</reference>
</references>
</person>
感谢您的帮助! :)
到目前为止我做了什么:
from xml.dom import minidom
doc = minidom.parse('SAC-Jahrbuch_1895_mul-ner.xml')
person = doc.getElementsByTagName('person')
lastnames = doc.getElementsByTagName('lastname')
positions = doc.getElementsByTagName('position')
professions = doc.getElementsByTagName('profession')
for ln in lastnames:
for pos in positions:
if ln.firstChild.nodeValue == u"Müller" and pos.firstChild.nodeValue == "68-590-2":
print "right person"
现在,我如何检查这个人是否已经有职业?如果不是:我如何添加职业和职位? 非常感谢!
答案 0 :(得分:0)
您可以使用simple来加载xml文件,然后您可以执行任何操作,例如修改节点值,删除节点,创建节点 在你的情况下,让我们说你有一个现有的文件&#34; person.xml&#34;并且它的网址是例如 &#34;个XML / person.xml&#34; 在php文件中写下面的代码,让我们说&#34; person.php&#34;
//so let us begin with loading "person.xml"
$root = simplexml_load_file("xmls/person.xml");
$person = $root->xpath("/person[profession='professor']");
for($i = 0; $i < count($person); $i++)
{
//i will modify just the first position and you can do this for the other
$person[$i]->references->reference->positions[0]->position[0]="12-122-3";
}
$root->asXml("xmls/person.xml");
你可以修改你想要的任何位置