Okay. Lets do an exercise. Now, your task in this exercise is to look at the
Chicago OSM data set and find all the top level tags in this data set. Now,
what we mean top level tags are essentially
all the distinct different types of tags that
you are going to see in this data set. Okay, so osm, bounds, node, tag and
so on. What I'd like you to do is
loop through this data set and create a dictionary such
that each time you see a particular tag, if
that tag isn't already in your dictionary you add it.
At the end, your dictionary should be populated by
all of the different types of tags contained in this
data set. Now the challenge here is that this file
is huge. If we take a look at its size,
I did that just a little bit ago. We can
see that it's just under 2 gigabytes of data. Now
we've talked about two different types of XML parsing in
this course. One is tree-based parsing where we essentially read
the entire document into memory, and then work with it
as nodes on a tree. The other way we've talked
about parsing XML is using a SAX parser or doing
iterative parsing. We actually looked at the iterparse method for element
tree back in lesson three. And that's what you
are going to be doing here. So instead of reading this
entire file into memory. What we are going to do
with iterparse is parse it one tag at a time
and so essentially what you are doing here is
treating each time you see a tag as an event
and for each one of those events, what we are
going to be doing is checking to see from our dictionary
whether we have seen a given tag. Before and I don't mean this specific tag.
Rather what I mean is a tag with this name. So bounds, node, tag, et cetera.
If you haven't seen it before, create a new key in the dictionary. And by the
time you're done parsing the file you'll have
all of the unique tag names. Good luck!
Okay. لننفذ أحد التمارين. تتمثل مهمتك الآن في هذا التمرين في الاطلاع على
مجموعة بيانات OSM الخاصة بمدينة شيكاغو والبحث عن جميع علامات المستوى العلوي الموجودة في مجموعة البيانات هذه. وما نقصده بعلامات المستوى العلوي
بشكل أساسي هو
جميع الأنواع المختلفة المميزة من العلامات
التي ستظهر لك في مجموعة البيانات هذه. مثل osm وbounds وnode وtag
وهكذا. أعمد هنا إلى
تكرار الإجراء عبر مجموعة البيانات هذه بالكامل وإنشاء قاموس
بحيث تتم إضافة العلامات غير الموجودة فيه من قبل
.كلما ظهرت لك
وفي النهاية، من المفترض ملء القاموس
بجميع الأنواع المختلفة من العلامات المضمنة في
مجموعة البيانات هذه. يكمن التحدي الآن في ضخامة
،هذا الملف. فإذا ألقينا نظرة على حجمه
وقد فعلت ذلك منذ قليل. فيمكننا ملاحظة
أنه يحتوي على ما يقرب من 2 جيجابايت من البيانات. تحدثنا الآن
عن نوعين مختلفين لتحليل مستند XML في
هذه الدورة التدريبية. أحدهما يتمثل في التحليل المستند إلى شجرة إذ نعمد فيه بشكل أساسي إلى قراءة
المستند بأكمله في الذاكرة، ثم نتعامل معه
على هيئة عُقد في شجرة. والنوع الآخر الذي تحدثنا عنه يتمثل في
تحليل مستند XML باستخدام محلل SAX أو إجراء
تحليل تكراري. سبق وألقينا نظرة على أسلوب iterparse الخاص بشجرة
العناصر في الدرس الثالث. وذلك ما
سنضطلع به هنا. فبدلاً من قراءة هذا
الملف بأكمله في الذاكرة. سنعمد إلى تحليل أسلوب iterparse
بواقع علامة واحدة في المرة
وما يتعين علينا تنفيذه هنا
هو التعامل مع العلامة كلما ظهرت لنا باعتبارها حدثًا
والتحقق من كل حدث
من خلال القاموس
.لمعرفة ما إذا كانت العلامة قد ظهرت لنا من قبل أم لا. ولا أقصد بذلك علامة محددة
.بل ما أقصده هو علامة مقترنة بهذا الاسم. مثل bounds وnode وtag وما إلى ذلك
إذا لم تظهر لك من قبل، فأنشئ مفتاحًا جديدًا في القاموس. وبحلول الوقت
الذي تكون انتهيت فيه من تحليل الملف، ستتوفر لديك
!جميع أسماء العلامات فريدة. Good luck
Certo. Vamos fazer um exercício. Sua tarefa nesse exercício é olhar os
dados OSM de Chicago e encontrar todas as tags de nível superior nesse conjunto de dados. Agora,
tags de nível superior são essencialmente
todos os tipos diferentes de tags distintas que
você verá nesse conjunto de dados. Então, temos osm, bounds, node, tag e
etc. Gostaria que você fizesse
um loop por esse conjunto de dados e criasse um dicionário
sempre que visse uma tag específica. Se
essa tag ainda não estiver no seu dicionário, você irá adicioná-la.
Por fim, seu dicionário deverá estar preenchido com
todos os tipos diferentes de tags desse
conjunto de dados. O desafio aqui é que esse arquivo
é imenso. Se olharmos para o tamanho dele,
como fiz há alguns minutos, veremos
que ele tem pouco menos de dois 2 gigabytes de dados. Bem,
nós falamos sobre dois tipos diferentes de análise de XML
nesse curso. Um é a análise baseada em árvore na qual, essencialmente, lemos
todo o documento dentro da memória e trabalhamos com ele
como nós em uma árvore. O outro modo que discutimos
para a análise de XML é o uso de um analisador SAX, ou uma
análise iterativa. Analisamos o método iterparse para a árvore
de elementos na lição três. E é isso que você
fará aqui. Então, em vez de ler todo
o arquivo na memória, o que faremos
com iterparse é analisar uma tag por vez.
Essencialmente, o que você está fazendo aqui é
tratar cada tag vista como um evento
e, para cada evento, iremos
verificar em nosso dicionário
se vimos uma tag específica. Quero dizer, se vimos uma tag antes, não essa tag específica.
Ou seja, uma tag com esses nomes. Como bounds, node, tag etc.
Se você ainda não tiver visto, crie uma nova chave no dicionário. E, ao
acabar a análise do arquivo, você terá
todos os nomes de tag específicos. Boa sorte!
好的 让我们来做个练习 你们在本练习中的任务是
查看芝加哥 OSM 数据集 找到这个数据集中所有的顶层标签
我们所说的顶层标签 基本上就是
你将在这个数据集中看到的所有
不同类型的标签 OSM、边界、节点、标签等等
我想让大家做的是
遍历此数据集并创建一个字典
这样每次你看到一个标签时
如果那个标签不在你的字典中 你可以添加它
最后 你的字典中应该填入
本数据集中包含的所有不同类型的标签
这里的挑战在于
这个文件非常大 如果我们看看它的大小
就在不久前我刚看过
我们会看到它接近 2G
我们在本课中已经讨论了两种不同类型的 XML 解析
一个是树型解析 在这种解析中 我们把
整个文件读入内存 然后把它当成树结构上的节点来处理
我们讨论的另一种解析 XML 的方式
是使用一个 SAX 解析器或
进行迭代解析 实际上在第三课中 我们已经学习了对元素树
进行迭代解析的方法 这就是我们要在这里做的事情
因此我们要对迭代解析做的是
一次解析一个标签
而不是把整个文件读进内存
因此 基本上大家在这里要做的就是
每次看到一个标签时都把它作为一个事件加以处理
对于这些事件 我们要做的是
从我们的字典中进行检查
看看我们以前是否见过某个特定的标签 我不是指这个标签
我指的是带这个名称的标签 边界、节点、标签等等
如果你以前没见过它 就在字典中创建一个新键
等你完成对这个文件的解析时
你将得到所有这些独特的标签名称 祝你好运！