python按层级找出xml文件的差异

python按层级找出xml文件的差异,第1张

使用Python可以按层级比较XML文件差异,可以使用lxml包判迹中的diff函数,允许指定差异掘猛并深度,而深度需要知神根据两个XML文件的差异而定。另外还可以使用difflib库中的diff()函数,它返回XML文件树形结构差异,可以轻松实现层级比对。

xml内容

<emails>

<email id= ′>

<subject>hello world</subject>

<sender></sender>

<receivedDate>: : </receivedDate>

</email>

<email id= ′>

<subject>hello world demo </subject>

<清搏轿sender></sender>

<receivedDate>: : </receivedDate>

</email>

<email id= ′>

<subject>hello world demo </subject>

<sender></sender>

<receivedDate>: : </receivedDate>

</email>

</emails>

java解析实现

import w c dom Document

import w c dom Node

import w c dom NodeList

 银渣 import xml sax SAXException

import javax xml parsers DocumentBuilder

import javax xml parsers DocumentBuilderFactory

import javax xml parsers ParserConfigurationException

import java io IOException

import java io InputStream

public class EmailsDemo {

public static void main(String[] args)

{

DocumentBuilderFactory factory = DocumentBuilderFactory newInstance()

try {

DocumentBuilder builder = factory newDocumentBuilder()

InputStream is = EmailsDemo class getResourceAsStream( /emails xml )

Document document = builder parse(is)

NodeList nodes = document getElementsByTagName( email )

for (int i = i <nodes getLength()i++)

{

Node node = em(i)

Node id = node getAttributes() getNamedItem( id )

System out println( id = + id getTextContent())

}

} catch (ParserConfigurationException e) {

e printStackTrace()

} catch (SAXException e) {

e printStackTrace()

} catch (IOException e) {

答肆e printStackTrace()

}

}

}

groovy解析实现

def emails = new XmlParser() parse( emails xml )

emails email each {

println ${it @id} ${it subject text()}

}

lishixinzhi/Article/program/Java/hx/201311/26896


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12298111.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存