我已經下載從IMDB數據庫中的一些.LIST文件的XML文件,並且我想使用他們的一些社會網絡分析的原因(與文獻研究),使用SNA軟件(其中輸入可以是XML或CSV)...創建列表文件格式
Q
創建列表文件格式
0
A
回答
1
0
下面是相關的事情我熟了起來:一個sed文件「movies2xml.sed」:
# ampersand etc ..
s|&|\&|g
s|<|\<|g
s|>|\>|g
# last field, if range
s|\([12\?][0189\?][0-9\?][0-9\?]\)-\([12\?][0189\?][0-9\?][0-9\?]\)$|<when><f>\1</f><t>\2</t></when>|
# last field, if single
s|\([12?][0189?][0-9?][0-9?]\)$|<when><y>\1</y></when>|
# made-for tv/vid/vidgame ..
s|(\([TVG][TVG]*\)) *<when|<for>\1</for><when|
# episode
s|{\(.*\)} *|<ep>\1</ep>|
# ep season, number
s|<ep>\(.*\)(#\([0-9][0-9]*\)\.\([0-9][0-9]*\))</ep>|<ep s='\2' e='\3'>\1</ep>|
# release year/Number (when titles are duplicated in a year)
s| (\([12\?][0189\?][0-9\?][0-9\?]\)\/*\([IVX]*\)) <|<y N='\2'>\1</y><|
s|<y N=''>|<y>|
# TV titles
s|^"\([^<]*\)"<y|<title type='tvseries'>\1</title><y|
# titles
s|^\(.[^<]*\)<y|<title type='film'>\1</title><y|
# vid game
s| type='film'\(.*<for>VG<\)| type='videogame'\1|
# wrap tag
s|^\(<.*>\)$|<entry>\1</entry>|
# rm other text
s|^\([^<].*\)$|<!-- \1 -->|
的XML標記名是有點簡潔,而且(6月份'14)有2936679個條目,組成334MB ..
我處理IMDB zip文件是這樣的:
(F=movies.xml ; echo '<list>' > $F ; \
zcat movies.list.gz | \
tr '\t' ' ' | tr -s ' -' | recode l9..u8..xml | \
sed -f movies2xml.sed >> $F ; \
echo '</list>' >> $F ;) &
然後這個XML輸出,此XSD驗證:
<?xml version="1.0" encoding="UTF-8"?>
<!-- imdb_movies_list.xsd -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="list">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="entry"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="entry">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" ref="title"/>
<xs:element minOccurs="1" maxOccurs="1" ref="y"/>
<xs:choice>
<xs:element minOccurs="0" maxOccurs="1" ref="for"/>
<xs:element minOccurs="0" maxOccurs="1" ref="ep"/>
</xs:choice>
<xs:element minOccurs="1" maxOccurs="1" ref="when"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="title">
<xs:complexType mixed="true">
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="tvseries"/>
<xs:enumeration value="videogame"/>
<xs:enumeration value="film"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="y">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="yeartype">
<xs:attribute name="N" use="optional">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="I"/>
<xs:enumeration value="II"/>
<xs:enumeration value="III"/>
<xs:enumeration value="IV"/>
<xs:enumeration value="V"/>
<xs:enumeration value="VI"/>
<xs:enumeration value="VII"/>
<xs:enumeration value="VIII"/>
<xs:enumeration value="IX"/>
<xs:enumeration value="X"/>
<xs:enumeration value="XI"/>
<xs:enumeration value="XII"/>
<xs:enumeration value="XIII"/>
<xs:enumeration value="XIV"/>
<xs:enumeration value="XV"/>
<xs:enumeration value="XVI"/>
<xs:enumeration value="XVII"/>
<xs:enumeration value="XVIII"/>
<xs:enumeration value="XIX"/>
<xs:enumeration value="XX"/>
<xs:enumeration value="XXI"/>
<xs:enumeration value="XXII"/>
<xs:enumeration value="XXIII"/>
<xs:enumeration value="XXIV"/>
<xs:enumeration value="XXV"/>
<xs:enumeration value="XXVI"/>
<xs:enumeration value="XXVII"/>
<xs:enumeration value="XXVIII"/>
<xs:enumeration value="XXIX"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="for">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="TV"/>
<xs:enumeration value="V"/>
<xs:enumeration value="VG"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ep">
<xs:complexType mixed="true">
<xs:attribute name="s" type="xs:integer" use="optional"/>
<xs:attribute name="e" type="xs:integer" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="when">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element name="y" type="yeartype" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
<xs:sequence>
<xs:element name="f" type="yeartype" minOccurs="1" maxOccurs="1"/>
<xs:element name="t" type="yeartype" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:simpleType name="yeartype">
<xs:restriction base="xs:string">
<xs:pattern value="[12?][0189?][0-9?][0-9?]"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
我期望有一個xml-to-json轉換器在那裏,對於信徒來說。
相關問題
- 1. 從文件創建列表
- 2. 以特定格式創建列表? [或者:創建一個特定格式的JSON文件]
- 3. 使用帶有表格格式和數據列的pytables創建HDF5文件
- 4. 從文件列表創建.new文件
- 5. 創建此陣列格式
- 6. 用格式創建一個Word文件
- 7. 使用JS創建格式文件
- 8. 從文本文件創建表格並添加列
- 9. 創建多列表格
- 10. 用空文件和非空文件列表創建列表
- 11. 如何從.csv文件創建表格?
- 12. Xcode - 創建csv /電子表格文件
- 13. 在aspx文件中創建表格
- 14. django創建多文件上傳表格
- 15. 爲Hadoop創建序列文件格式MR
- 16. Python爲列和行創建/格式化CSV文件
- 17. 創建文件,每列模式
- 18. 從大文件流式創建陣列
- 19. 從一個文件的格式化多行輸出創建一個列表
- 20. 從不同記錄格式的文件創建外部HIVE表
- 21. 創建表時HIVE中的文件格式
- 22. 創建從一個列表中的文件用空格
- 23. VBA - 從列表創建多個文件
- 24. 創建數組列表文件
- 25. 得到的文件列表中創建
- 26. 從XML文件創建數組列表
- 27. 從php創建txt文件列表
- 28. 從批處理文件創建列表
- 29. Python:從文件創建一個列表
- 30. 通過xpath列表創建xml文件
我不知道「.LIST」文件是什麼樣子。請添加一個示例。 – Tomalak 2010-12-08 10:33:10