1. Xml简介

➢XML指可扩展标记语言(Extensible Markup Language)
➢XML被设计用于结构化、存储和传输数据
➢XML是一种标记语言,很类似于HTML
➢XML没有像HTML那样具有预定义标签,需要程序员自定义标签。
➢XML被设计为具有自我描述性,并且是W3C的标准

  1. Xml文档树结构

XML文档形成了一种树结构,它从“ 根部” 开始,然后扩展到“ 树
枝” 。
XML文档必须包含根元素,该元素是所有其他元素的父元素,文档中的所有元素形成了一棵文档树,这课树从根开始,并扩展到树的最顶端,并且所有的元素都可以有子元素。

  1. Xml元素

XML的元素是指从开始标签直到结束标签的部分(均包括开始结束)。
一个元素可以包含:

1、其他元素
2、文本
3、属性
4、或混合以上所有

  1. Xml语法规则

所有的XML元素都必须有一个开始标签和结束标签,省略结束标签是非法的。如:
<root> content </root>
XML标签对大小写敏感;比如: 下面是两个不同的标签
<Note>this is a test1</Note>
<note>this is a test2</note>

XML文档必须有根元素。如:
<note>
<b>this is a test2</b>
<name>joy</name>
</note>
XML必须正确嵌套,父元素必须完全包住子元素。如:
<note><b>this is a test2</b></note>
XML属性值必须加引号,元素的属性值都是一个键值对形式。如:
<book category=" Python"></book>

  1. Xml元素命名规则

➢名称可以包含字母、数字以及其他字符
➢名称不能以数字或标点符号开头
➢名称不能以字母xml或XML开始
➢名称不能包含空格
➢可以使用任何名称,没有保留字
➢名称应该具有描述性,简短和简单,可以同时使用下划线。
➢避免“ -” 、“ .” 、“:”等字符。

  1. Xml的注释

XML注释格式为:
<!-- 注释内容 -->

  1. CDATAUnparsed Character Data)指的是不应由XML解析器进行解析的
    文本数据。

语法格式:

<![CDATA[“ 我们自己的代码"]]>

注意:
CDATA部分不能包含字符串“ ]]>” ,并且]]>” 之间不能有空格或折行等字符,

如果包含了,会以为是CDATA的结束。也不允许嵌套CDATA部分。

  1. Python解析xml的三种方法

SAX(simple API for XML):边读边解析,占用内存少,但需要用户实现回调函数(handler)。

DOM(Document Object Model):把xml文件解析成一棵树,可以非常灵活的遍历里面的对象。但是xml文件较大时占用内存大,不适合解析大文件。

ElementTree(Object Model):对dom的改进,速度快,占用内存少

  1. xml.dom解析xml常用Api

xml.dom解析xml思路 :

一个DOM的解析器在解析一个XML文档时,一次性读取整个文档,把文档中所有元素保存在内存中的一个树结构里,之后利用DOM提供的不同函数来读取该文档的内容和结构,也可以把修改过的内容写入XML文件。

  1. xml.dom解析xml常用APIminidom.parse(parser=None, bufsize=None)

该函数的作用是使用parse解析器打开xml文档,并将其解析为DOM文档,也就是内存中的一棵树,并得到这个DOM对象。

#coding=utf-8
#从xml.dom.minidom模块引入解析器parse
from xml.dom.minidom import parse 
#minidom解析器打开xml文档并将其解析为内存中的一棵树
DOMTree = parse(r"E:\book.xml")
print type(DOMTree)

结果:

E:\>python a.py

<type 'instance'>

  1. xml.dom解析xml常用APIdoc.documentElement获取xml文档对象,就是拿到DOM树的根

#coding=utf-8

#从xml.dom.minidom模块引入解析器parse

from xml.dom.minidom import parse

#minidom解析器打开xml文档并将其解析为内存中的一棵树

DOMTree = parse(r"E:\book.xml")

print type(DOMTree)

booklist = DOMTree.documentElement

print booklist

结果:

E:\>python a.py

<type 'instance'>

<DOM Element: booklist at 0x1c73b70>

  1. xml.dom解析xml常用API:获取xml文档函数 doc.toxml(encoding=None)

#coding=utf-8

#从xml.dom.minidom模块引入解析器parse

from xml.dom.minidom import parse

#minidom解析器打开xml文档并将其解析为内存中的一棵树

DOMTree = parse(r"E:\book.xml")

print type(DOMTree)

booklist = DOMTree.documentElement

print booklist

print u"xml文档内容:\n%s" %DOMTree.toxml()

  1. xml.dom解析xml常用API hasAttribute(name)判断某个节点node是否存在某个属性,存在则返回True,否则返回False

#coding=utf-8

#从xml.dom.minidom模块引入解析器parse

from xml.dom.minidom import parse

#minidom解析器打开xml文档并将其解析为内存中的一棵树

DOMTree = parse(r"E:\book.xml")

#print type(DOMTree)

booklist = DOMTree.documentElement

#print booklist

#print u"xml文档内容:\n%s" %DOMTree.toxml()

if booklist.hasAttribute("type") :

#判断根节点booklist是否有type属性

print u"booklist元素存在type属性"

else :

print u"booklist元素不存在type属性"

  1. xml.dom解析xml常用API node. getAttribute(attname)获取节点node的某个属性的值。

#coding=utf-8

#从xml.dom.minidom模块引入解析器parse

from xml.dom.minidom import parse

#minidom解析器打开xml文档并将其解析为内存中的一棵树

DOMTree = parse(r"E:\book.xml")

#print type(DOMTree)

booklist = DOMTree.documentElement

#print booklist

#print u"xml文档内容:\n%s" %DOMTree.toxml()

if booklist.hasAttribute("type") :

#判断根节点booklist是否有type属性

print u"booklist元素存在type属性"

else :

print u"booklist元素不存在type属性"

print "Root element is", booklist.getAttribute("type")

  1. 获取节点元素:node.getElementsByTagName(name)获取XML文档中某个父节点下具有相同节点名的节点对象集合,是一个list对象。

#coding=utf-8

#从xml.dom.minidom模块引入解析器parse

from xml.dom.minidom import parse

#minidom解析器打开xml文档并将其解析为内存中的一棵树

DOMTree = parse(r"E:\book.xml")

#print type(DOMTree)

booklist = DOMTree.documentElement

#print booklist

#print u"xml文档内容:\n%s" %DOMTree.toxml()

if booklist.hasAttribute("type") :

#判断根节点booklist是否有type属性

print u"booklist元素存在type属性"

else :

print u"booklist元素不存在type属性"

#print "Root element is", booklist.getAttribute("type")

books = booklist.getElementsByTagName("book")

print type(books)

print books

练习:
 print books[0].toxml()
 print books[0].tagName
print books[0].getElementsByTagName("title")
print books[0].getElementsByTagName("title")[0].toxml()

只提取title里面的内容,怎么取?
books = booklist.getElementsByTagName("book")
print books[0].childNodes

  1. 获取节点元素:node.childNodes返回节点node下所有子节点组成的list

#coding=utf-8

from xml.dom.minidom import parse #从xml.dom.minidom模块引入解析器parse

#minidom解析器打开xml文档并将其解析为内存中的一棵树

DOMTree = parse(r"E:\book.xml")

#获取xml文档对象,就是拿到树的根

booklist = DOMTree.documentElement

#获取booklist对象中所有book节点的list集合

books = booklist.getElementsByTagName("book")

print books[0].childNodes

  1. 获取节点文本值:node.childNodes[index].data获取节点node的文本值,即标签之间的文本内容。

#coding=utf-8

import xml.dom.minidom

from xml.dom.minidom import parse

#minidom解析器打开xml文档并将其解析为内存中的一棵树

DOMTree = xml.dom.minidom.parse(r"E:\book.xml")

#获取xml文档对象,就是拿到树的根

booklist = DOMTree.documentElement

if booklist.hasAttribute("type") :

#判断根节点booklist是否有type属性,有则获取并打印属性的值

print u"Root element is", booklist.getAttribute("type")

#获取booklist对象中所有book节点的list集合

books = booklist.getElementsByTagName("book")

print u"book节点的个数:", books.length

for book in books :

print "*******************book*******************"

if book.hasAttribute("category") :

print u"category is", book.getAttribute("category")

#根据结点名title拿到这个book结点下所有的title结点的集合list。

#[0]表示第一个title标签,因为一个<book>...</book>之间可能会

#定义多个title标签

title = book.getElementsByTagName('title')[0]

print "Title is", title.childNodes[0].data

author = book.getElementsByTagName('author')[0]

print "author is", author.childNodes[0].data

pageNumber = book.getElementsByTagName('pageNumber')[0]

print "pageNumber is", pageNumber.childNodes[0].data

结果:

标签里的内容是节点,标签外的内容是文本节点。

练习:

把李四相关标签取出来放到一个字典里。

#coding=utf-8

#从xml.dom.minidom模块引入解析器parse

from xml.dom.minidom import parse

#minidom解析器打开xml文档并将其解析为内存中的一棵树

DOMTree = parse(r"e:\book.xml")

print type(DOMTree)

booklist = DOMTree.documentElement

print booklist

print "*"*30

books = booklist.getElementsByTagName("book")

d={}

for i in range(1,6,2):   #这里的结果是1,3,5   2是步长

tag_name =  books[1].childNodes[i].tagName

d[tag_name]=books[1].childNodes[i].childNodes[0].data

print d

for k,v in d.items():

print k,v

老师分析过程如下:

第一步,获取父节点下所有子节点对象,存到books这个list中

>>> books = booklist.getElementsByTagName("book")
>>> print books
[<DOM Element: book at 0x230b308>, <DOM Element: book at

第二步,获取books这个list中的第2个结点,books[1]
>>> print books[1]
<DOM Element: book at 0x230b808>

第三步,获取第2个结点books[1]的文档
>>> print books[1].toxml()
<book category="Python">
    <title>learning Python</title>
    <author>李四</author>
    <pageNumber>600</pageNumber>
  </book>

第四步,获取第二个结点books[1]下的子节点list
>>> print books[1].childNodes
[<DOM Text node "u'\n    '">, <DOM Element: title at 0x23
"u'\n    '">, <DOM Element: author at 0x230bac8>, <DOM Te
DOM Element: pageNumber at 0x230bbc8>, <DOM Text node "u'
第五步,获取第2个结点books[1]下的第2个子节点childNode[1]
>>> print books[1].childNodes[1]
<DOM Element: title at 0x230b9c8>

第六步,获取第2个结点books[1]下的第2个子节点childNode[1]的文档
>>> print books[1].childNodes[1].toxml()
<title>learning Python</title>
第七步,获取第2个结点books[1]下的第2个子节点childNode[1]作为父节点下的子节点对象
>>> print books[1].childNodes[1].tagName
title

第八步,把获取到的tagname存入字典的key
>>> d={}
>>> key=books[1].childNodes[1].tagName
>>> print key
title

第九步,获取该结点的文本值
>>> print books[1].childNodes[1].childNodes[0].data
learning Python

第十步,把获取到的文本值存入字典的value
>>> d[key]=books[1].childNodes[1].childNodes[0].data

打印最后的结果
>>> print d
{u'title': u'learning Python'}

练习2:把第一个book的title和pagenumber的标签名字和内容放到一个字典里面

自己的答案:

#coding=utf-8

#从xml.dom.minidom模块引入解析器parse

from xml.dom.minidom import parse

#minidom解析器打开xml文档并将其解析为内存中的一棵树

DOMTree = parse(r"e:\book.xml")

#print type(DOMTree)

booklist = DOMTree.documentElement

#print booklist

books = booklist.getElementsByTagName("book")

#print books

d={}

for i in range(1,6,4):   #这里的结果是1,5   4是步长

tag_name =  books[0].childNodes[i].tagName

d[tag_name]=books[0].childNodes[i].childNodes[0].data

#print d

#print books[0].childNodes[i].childNodes[0].data

for k,v in d.items():

print k,v

结果:

E:\>python a.py

pageNumber 561

title learning math

位置的对应关系:

<DOM Text node "u'\n    '">  book 后的回车

<DOM Element: title at 0x4115608> title结点

<DOM Text node "u'\n    '">title后的文本结点,内容是回车

<DOM Element: author at 0x4115708>author结点

<DOM Text node "u'\n    '">author后的文本结点,内容是回车

<DOM Element: pageNumber at 0x4115808>pagenuber结点

<DOM Text node "u'\n  '">pagenumber后的文本结点,内容是回车

  1. 解析的例题:

#coding=utf-8

import xml.dom.minidom

from xml.dom.minidom import parse

#minidom解析器打开xml文档并将其解析为内存中的一棵树

DOMTree = xml.dom.minidom.parse(r"E:\book.xml")

#获取xml文档对象,就是拿到树的根

booklist = DOMTree.documentElement

if booklist.hasAttribute("type") :

#判断根节点booklist是否有type属性,有则获取并打印属性的值

print u"Root element is", booklist.getAttribute("type")

#获取booklist对象中所有book节点的list集合

books = booklist.getElementsByTagName("book")

print u"book节点的个数:", books.length

for book in books :  #获取结点中的属性值

print "*******************book*******************"

if book.hasAttribute("category") :

print u"category is", book.getAttribute("category")

#根据结点名title拿到这个book结点下所有的title结点的集合list。

#[0]表示第一个title标签,因为一个<book>...</book>之间可能会

#定义多个title标签

title = book.getElementsByTagName('title')[0] #拿到第一个title结点

print "Title is", title.childNodes[0].data

author = book.getElementsByTagName('author')[0]

print "author is", author.childNodes[0].data

pageNumber = book.getElementsByTagName('pageNumber')[0]

print "pageNumber is", pageNumber.childNodes[0].data

结果:

E:\>python a.py

Root element is science and engineering

book节点的个数: 2

*******************book*******************

category is math

Title is learning math

author is 张三

pageNumber is 561

*******************book*******************

category is Python

Title is learning Python

author is 李四

pageNumber is 600

  1. Movies.xm解析实例:

#coding=utf-8

from xml.dom.minidom import parse

import xml.dom.minidom

# 使用minidom解析器打开 XML 文档

DOMTree = xml.dom.minidom.parse(r"E:\movies.xml")

collection = DOMTree.documentElement

if collection.hasAttribute("shelf"):

print "Root element : %s" % collection.getAttribute("shelf")

# 在集合中获取所有电影

movies = collection.getElementsByTagName("movie")

# 打印每部电影的详细信息

for movie in movies:

print "*****Movie*****"

if movie.hasAttribute("title"):

print "Title: %s" % movie.getAttribute("title")

type = movie.getElementsByTagName('type')[0]

print "Type: %s" % type.childNodes[0].data

format = movie.getElementsByTagName('format')[0]

print "Format: %s" % format.childNodes[0].data

rating = movie.getElementsByTagName('rating')[0]

print "Rating: %s" % rating.childNodes[0].data

description = movie.getElementsByTagName('description')[0]

print "Description: %s" % description.childNodes[0].data

结果:

E:\>python a.py

Root element : New Arrivals

*****Movie*****

Title: Enemy Behind

Type: War, Thriller

Format: DVD

Rating: PG

Description: Talk about a US-Japan war

*****Movie*****

Title: Transformers

Type: Anime, Science Fiction

Format: DVD

Rating: R

Description: A schientific fiction

*****Movie*****

Title: Trigun

Type: Anime, Action

Format: DVD

Rating: PG

Description: Vash the Stampede!

*****Movie*****

Title: Ishtar

Type: Comedy

Format: VHS

Rating: PG

Description: Viewable boredom

上面的程序完善,增加操作动态标签的名字:

#coding=utf-8

from xml.dom.minidom import parse

import xml.dom.minidom

# 使用minidom解析器打开 XML 文档

DOMTree = xml.dom.minidom.parse(r"e:\movies.xml")

collection = DOMTree.documentElement

if collection.hasAttribute("shelf"):

print "Root element : %s" % collection.getAttribute("shelf")

# 在集合中获取所有电影

movies = collection.getElementsByTagName("movie")

# 打印每部电影的详细信息

for movie in movies:

print "*****Movie*****"

if movie.hasAttribute("title"):

print "Title: %s" % movie.getAttribute("title")

type = movie.getElementsByTagName('type')[0]

tag_name= movie.getElementsByTagName('type')[0].tagName

print "%s: %s" %(tag_name,type.childNodes[0].data)

format = movie.getElementsByTagName('format')[0]

tag_name= movie.getElementsByTagName('format')[0].tagName

print "%s: %s" %(tag_name,format.childNodes[0].data)

rating = movie.getElementsByTagName('rating')[0]

tag_name= movie.getElementsByTagName('rating')[0].tagName

print "%s: %s" %(tag_name,rating.childNodes[0].data)

description = movie.getElementsByTagName('description')[0]

tag_name= movie.getElementsByTagName('description')[0].tagName

print "%s: %s" %(tag_name,description.childNodes[0].data)

  1. 创建xml空文档:minidom.Document()该方法用于创建一个空白的xml文档对象,并返回这个doc对象。每个xml文档都是一个Document对象,代表着内存中的DOM树。

#coding=utf-8

import xml.dom.minidom

#在内存中创建一个空的文档

doc = xml.dom.minidom.Document()

print doc

结果:

E:\>python a.py

<xml.dom.minidom.Document instance at 0x01ABFBC0>

  1. 创建xml文档根节点:doc.createElement(tagName)生成xml文档节点。参数表示要生成节点的名称。

#coding=utf-8

import xml.dom.minidom

#在内存中创建一个空的文档

doc = xml.dom.minidom.Document()

print doc

#创建一个根节点Managers对象

root = doc.createElement('Managers')

print u"添加的xml标签为:", root.tagName

结果:

E:\>python a.py

<xml.dom.minidom.Document instance at 0x01ADEDA0>

添加的xml标签为: Managers

  1. 添加节点属性:node.setAttribute(attname, value)该方法表示给节点添加属性值对(Attribute。参数说明:attname :属性的名称   value :属性的值

#coding=utf-8

import xml.dom.minidom

#在内存中创建一个空的文档

doc = xml.dom.minidom.Document()

print doc

#创建一个根节点Managers对象

root = doc.createElement('Managers')

print u"添加的xml标签为:", root.tagName

# 给根节点root添加属性

root.setAttribute('company', 'xx科技')

value = root.getAttribute('company')

print u"root元素的'company'属性值为:", value.decode('utf-8').encode('gbk')

结果:

E:\>python a.py

<xml.dom.minidom.Document instance at 0x01A9FDC8>

添加的xml标签为: Managers

root元素的'company'属性值为: xx科技

  1. 创建一个新节点,加文本节点:doc.createTextNode(data)给叶子节点添加文本节点。

#coding=utf-8

import xml.dom.minidom

#在内存中创建一个空的文档

doc = xml.dom.minidom.Document()

print doc

#创建一个根节点Managers对象

root = doc.createElement('Managers')

print u"添加的xml标签为:", root.tagName

# 给根节点root添加属性

root.setAttribute('company', 'xx科技')

value = root.getAttribute('company')

print u"root元素的'company'属性值为:", value.decode('utf-8').encode('gbk')

ceo = doc.createElement('CEO')

#给叶子节点name设置一个文本节点,用于显示文本内容

ceo.appendChild(doc.createTextNode('吴总'))

print ceo.tagName

print u"给叶子节点添加文本节点成功"

print ceo.childNodes[0].data.decode("utf-8")   #验证下添加的子节点是不是对的

结果:

E:\>python a.py

<xml.dom.minidom.Document instance at 0x01BCFDC8>

添加的xml标签为: Managers

root元素的'company'属性值为: xx科技

CEO

给叶子节点添加文本节点成功

吴总

  1. 完整创建xml例子:doc/parentNode.appendChild(node)将节点node添加到文档对象doc作为文档树的根节点或者添加到父节点parentNode下作为其子节点。

#coding=utf-8

import xml.dom.minidom

#在内存中创建一个空的文档

doc = xml.dom.minidom.Document()

#创建一个根节点company对象

root = doc.createElement('companys')

# 给根节点root添加属性

root.setAttribute('name', u'公司信息')

#将根节点添加到文档对象中

doc.appendChild(root)

# 给根节点添加一个叶子节点

company = doc.createElement('gloryroad')

# 叶子节点下再嵌套叶子节点

name = doc.createElement("Name")

# 给节点添加文本节点

name.appendChild(doc.createTextNode(u"光荣之路教育科技公司"))

ceo = doc.createElement('CEO')

ceo.appendChild(doc.createTextNode(u'吴总'))

# 将各叶子节点添加到父节点company中

# 然后将company添加到跟节点companys中

company.appendChild(name)

company.appendChild(ceo)

root.appendChild(company)

print doc.toxml()

#文本结点挂到子节点,子节点挂到根节点。

#我们可以有多个子节点,挂到根节点。

#可以创建多级节点。

结果:

E:\>python a.py

<?xml version="1.0" ?><companys name="公司信息"><gloryroad><Name>光荣之路教育科

技公司</Name><CEO>吴总</CEO></gloryroad></companys>

  1. 生成xml文档:doc.writexml()

#coding=utf-8

import codecs

import xml.dom.minidom

#在内存中创建一个空的文档

doc = xml.dom.minidom.Document()

#创建一个根节点company对象

root = doc.createElement('companys')

# 给根节点root添加属性

root.setAttribute('name', u'公司信息')

#将根节点添加到文档对象中

doc.appendChild(root)

# 给根节点添加一个叶子节点

company = doc.createElement('gloryroad')

# 叶子节点下再嵌套叶子节点

name = doc.createElement("Name")

# 给节点添加文本节点

name.appendChild(doc.createTextNode(u"光荣之路教育科技公司"))

ceo = doc.createElement('CEO')

ceo.appendChild(doc.createTextNode(u'吴总'))

# 将各叶子节点添加到父节点company中

# 然后将company添加到跟节点companys中

company.appendChild(name)

company.appendChild(ceo)

root.appendChild(company)

print doc.toxml()

#文本结点挂到子节点,子节点挂到根节点。

#我们可以有多个子节点,挂到根节点。

#可以创建多级节点。

fp = codecs.open('e:\\company.xml', 'w','utf-8')

doc.writexml(fp, indent='', addindent='\t', newl='\n', encoding="utf-8")

fp.close()

  1. 创建xml文档完整实例2

#coding=utf-8

import xml.dom.minidom

#在内存中创建一个空的文档

doc = xml.dom.minidom.Document()

#创建一个根节点Managers对象

root = doc.createElement('Managers')

#设置根节点的属性

root.setAttribute('company', 'xx科技')

root.setAttribute('address', '科技软件园')

#将根节点添加到文档对象中

doc.appendChild(root)

managerList = [{'name' : 'joy',  'age' : 27, 'sex' : '女'},

{'name' : 'tom', 'age' : 30, 'sex' : '男'},

{'name' : 'ruby', 'age' : 29, 'sex' : '女'}  ]

for i in managerList :

nodeManager = doc.createElement('Manager')

nodeName = doc.createElement('name')

#给叶子节点name设置一个文本节点,用于显示文本内容

nodeName.appendChild(doc.createTextNode(str(i['name'])))

nodeAge = doc.createElement("age")

nodeAge.appendChild(doc.createTextNode(str(i["age"])))

nodeSex = doc.createElement("sex")

nodeSex.appendChild(doc.createTextNode(str(i["sex"])))

#将各叶子节点添加到父节点Manager中,

#最后将Manager添加到根节点Managers中

nodeManager.appendChild(nodeName)

nodeManager.appendChild(nodeAge)

nodeManager.appendChild(nodeSex)

root.appendChild(nodeManager)

#开始写xml文档

fp = open('e:\\Manager.xml', 'w')

doc.writexml(fp, indent='\t', addindent='\t', newl='\n', encoding="utf-8")

fp.close()

xml了解的更多相关文章

  1. XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法

            在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...

  2. .NET Core采用的全新配置系统[9]: 为什么针对XML的支持不够好?如何改进?

    物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonConfigurationSource.XmlConfigura ...

  3. WebApi接口 - 响应输出xml和json

    格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点 ...

  4. XML技术之DOM4J解析器

    由于DOM技术的解析,存在很多缺陷,比如内存溢出,解析速度慢等问题,所以就出现了DOM4J解析技术,DOM4J技术的出现大大改进了DOM解析技术的缺陷. 使用DOM4J技术解析XML文件的步骤? pu ...

  5. UWP开发之Mvvmlight实践六:MissingMetadataException解决办法(.Net Native下Default.rd.xml配置问题)

    最近完成一款UWP应用,在手机端测试发布版(Release)的时候应用莫名奇妙的强行关闭,而同样的应用包在PC端一点问题都没有,而且Debug版在两个平台都没有问题,唯独手机的Release版有问题. ...

  6. PHP中遍历XML之SimpleXML

    简单来讲述一些XML吧,XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言.XML是当今用于传输数据的两大工具之一,另外一个是json. 我们在PHP中使用XML也是用来传输数据, ...

  7. Asp.Net 操作XML文件的增删改查 利用GridView

    不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...

  8. Mybatis XML配置

    Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...

  9. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

  10. C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”

    Q: 在反序列化 Xml 字符串为 Xml 对象时,抛出如下异常. 即在 XML文档(0, 0)中有一个错误:缺少根元素. A: 首先看下代码: StringBuilder sb = new Stri ...

随机推荐

  1. 《移动Web前端高效开发实战》笔记1——静态布局在移动端上的自适应

    1.整体缩放 整体缩放可以用在营销活动页,营销活动可能因为设计美观需求必须使用背景图片而非背景色,因此需要考虑背景图适应屏幕大小.开发者可以用320像素的宽度作为基础宽度(高度可以固定),然后通过计算 ...

  2. ImageLoader常用方法注释

    ImageLoader中的常用方法及相关作用注释 ImageLoader 的ImageLoaderConfiguration config 配置 ImageLoaderConfiguration co ...

  3. db2数据库备份

    一.离线备份 db2  list  database  directory -----查看有哪些数据库,确定需要备份哪个数据库 db2  disconnect  current -----断开以数据库 ...

  4. 在Windows Server 2012中搭建SQL Server 2012故障转移集群

    OK~ WSFC 2012 R2 年度盛宴开始~ 在本文中,老王将用一系列的场景,把动态仲裁,动态见证,票数调整,LowerQuorumPriorityNodeID,阻止仲裁等群集仲裁技术串起来,完成 ...

  5. 如何对ABAP SE80 workbench做增强

    流程如下: 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  6. idea spring boot启动项目上面有红色叉

    一打开IDEA,在启动debug项目有一个红色叉如下图 因为打开项目可以主项目的包没有加载进来,解决办法就是右击项目->maven->Reimport  就搞定了..

  7. 从Docker到Kubernetes进阶

    分享个网站,k8s技术圈阳明大佬的网站 现在基本都用有道云笔记了,比较方便,所以准备弃用博客园了...

  8. HTML5<figure>元素

    HTML5<figure>元素是用来定义页面文档中独立的流内容(图像,图表,照片,代码块),figure内容与主内容有关,如果被删除,则不影响主文档流的产生. HTML5<figca ...

  9. Java String Integer转换 练习:编程求字符串“100”和“150”按十进制数值做差后的结果以字符串形式输出。

    package com.swift; public class String_To_Integer_Test { public static void main(String[] args) { /* ...

  10. MyBatis逆向工程中的Mapper接口以及Example的实例函数及详解

    一.mapper接口中的方法解析 mapper接口中的函数及方法 方法 功能说明 int countByExample(UserExample example) thorws SQLException ...