练习一下,熟悉一下规则和与python的通信代码
1XML和JSON主要是用于存储信息,并对这些信息打上标签,设定规则,这样就可以利用js和python等后端语言来调用信息。在需要更新迭代时只需要修改XML和JSON文件内容即可,使代码适应性强。
这部分主要内容为
XML语言格式,XML的DTD约束和schema约束,Python读取XML的SAX和DOM和ElementTree方式,
JSON语言格式,Python读取JSON的方式
其实js的读取也应该练习一下,注重几个调取函数
2XML的重要要点
1使用树结构,必须有根元素
2声明必须存放在文档第一行,不能有空格,顶头写
3声明中版本常用1.0因为1.1不向下兼容,编码方式常用utf-8,该编码方式常用html,css,js,php和sql中,所以统一使用
4所有的元素都必须有一个关闭标签,他是严格型语言
5必须正确的嵌套,不能混乱
6标签对大小写敏感
7属性值必须加引号
8使用实体引用来代替部分字符,如less than 代替<,greater than 代替>,’ apoersand "quation mark & apostophe
9注释和html一样
10在xml中空格会被保留
11使用换行符/r来存储换行,在unix和mac osx中是回车符/n,在windows是/n/r
12命名规则
1名称可以包含字母数字及其他符号
2名称不能以数字或标点开始
3名称中不能含有xmlXMLXml等任何大小写的组合
4名称中不能有空格
13最佳命名就使用下划线小写和驼峰法就好
14元素可扩展,即在使用时对其修改,依然可以调用
15元素的属性,建议尽量少使用,除非这里这个值不会改变,直接把这个属性作为子元素就好,可以方便修改
3xml的约束,DTD约束
4xml的约束schema约束
5 Schema是对XML文档结构的定义和描述,其主要的作用是用来约束XML文件,并验证XML文件有效性。DTD的作用是定义XML的合法构建模块,它使用一系列的合法元素来定义文档结构。它们之间的区别有下面几点:
1、Schema本身也是XML文档,DTD定义跟XML没有什么关系,Schema在理解和实际应用有很多的好处。
2、DTD文档的结构是“平铺型”的,如果定义复杂的XML文档,很难把握各元素之间的嵌套关系;Schema文档结构性强,各元素之间的嵌套关系非常直观。
3、DTD只能指定元素含有文本,不能定义元素文本的具体类型,如字符型、整型、日期型、自定义类型等。Schema在这方面比DTD强大。
4、Schema支持元素节点顺序的描述,DTD没有提供无序情况的描述,要定义无序必需穷举排列的所有情况。Schema可以利用xs:all来表示无序的情况。
5、对命名空间的支持。DTD无法利用XML的命名空间,Schema很好满足命名空间。并且,Schema还提供了include和import两种引用命名空间的方法。这里指的是schema的层结构和xml的一致,方便对schema的xml形式的文档进行读,而DTD没有XML的形式,无法读,命名空间可以使多个xsd来规定一个xml,引入方法为include和import,当导入的模式具有 targetNamespace 时,将使用 ,而当包含的模式未声明 targetNamespace 时,将使用 。
6json
json数据格式:主要由对象 { } 和数组 [ ] 组成:
其中对象包括键值对(属性:属性值){key: value},value 可为 str,num,list,obj。取值使用 objcet.key
{key: value, key2:value2,} 键:值用冒号分开,对间用,连接
数组包含元素:num,str,list,objcet 都可以,利用索引访问 [index],用 . 连接各个值:
json对象用点,数组用【】
e.g:
var stu = {“student”: //stu 对象包含student的key,值为一个数组
[ //数组的每一个值为一个具体的学生对象
{“name”: “Tom”,“Grade”:1, “age”:11, “gender”: “M”}, //学生对象的键为名字,值为对应属性
{“name”: “Jerry”, “Grade”:1, “age”:10, “gender”: “M”} //每个属性对应的是一个key,value对
],
“classroom”: {“class1”: “room1”, “class2”: “room2”} //对象的值,嵌套对象
};
读取数据:
document.write(stu.student[1].name); // 输出第二个学生名
document.write(stu.student[0].age); // 输出第一个学生年龄
document.write(stu.classroom.class1); // 输出 classroom 的 class1 值
document.write(stu[“classroom”].class2); // 也可用中括号键访问对象值