Ceci est un suivi de la question (Link)Suivi itérer sur un graphique en utilisant XML minidom
Ce que je veux le faire est d'utiliser le XML pour créer un graphique à l'aide NetworkX. En regardant la structure DOM ci-dessous, tous les nœuds dans le même nœud devraient avoir un bord entre eux, et tous les nœuds qui ont assisté à la même conférence devraient avoir un nœud à cette conférence. Pour résumer, tous les auteurs qui ont travaillé ensemble sur un document doivent être connectés les uns aux autres, et tous les auteurs qui ont assisté à une conférence particulière devraient être connectés à cette conférence.
<conference name="CONF 2009">
<paper>
<author>Yih-Chun Hu(UIUC)</author>
<author>David McGrew(Cisco Systems)</author>
<author>Adrian Perrig(CMU)</author>
<author>Brian Weis(Cisco Systems)</author>
<author>Dan Wendlandt(CMU)</author>
</paper>
<paper>
<author>Dan Wendlandt(CMU)</author>
<author>Ioannis Avramopoulos(Princeton)</author>
<author>David G. Andersen(CMU)</author>
<author>Jennifer Rexford(Princeton)</author>
</paper>
</conference>
J'ai compris comment connecter les auteurs à des conférences, mais je ne suis pas sûr de la façon de se connecter les uns aux autres auteurs. Ce qui me pose problème, c'est de parcourir les auteurs qui ont travaillé sur le même document et de les relier entre eux.
dom = parse(filepath)
conference=dom.getElementsByTagName('conference')
for node in conference:
conf_name=node.getAttribute('name')
print conf_name
G.add_node(conf_name)
#The nodeValue is split in order to get the name of the author
#and to exclude the university they are part of
plist=node.getElementsByTagName('paper')
for p in plist:
author=str(p.childNodes[0].nodeValue)
author= author.split("(")
#Figure out a way to create edges between authors in the same <paper> </paper>
alist=node.getElementsByTagName('author')
for a in alist:
authortext= str(a.childNodes[0].nodeValue).split("(")
if authortext[0] in dict:
edgeQuantity=dict[authortext[0]]
edgeQuantity+=1
dict[authortext[0]]=edgeQuantity
G.add_edge(authortext[0],conf_name)
#Otherwise, add it to the dictionary and create an edge to the conference.
else:
dict[authortext[0]]= 1
G.add_node(authortext[0])
G.add_edge(authortext[0],conf_name)
i+=1
Il existe de nombreuses façons de faire la plupart de ce que vous décrivez, mais je pense que vous devez préciser votre objectif un peu plus explicitement. pourquoi un graphique? Comment envisagez-vous de parcourir le graphique? Dans le contexte de votre problème, que signifie réellement «connecté»? par exemple. Selon la façon dont vous construisez le graphique, connecter les participants à une conférence les connectera par défaut, sans fournir de résolution au niveau du papier. – si28719e