xml文件比较问题

padababy 2008-03-17 11:07:25
有新旧两个xml文件需要尽行比较。
对于各个节点值,如果新旧不一致的话,取旧的。
最后 把结果输出来。
采用java,请做过的高手指点迷津,有代码最好,没有的话,思路也行。
谢谢!
...全文
298 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
karlpan01 2008-03-17
  • 打赏
  • 举报
回复
var arrSignatures = new Array("MSXML.DOMDocument","Microsoft.XmlDom","MSXML2.DOMDocument","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument.4.0","MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.6.0"); 
var oXmlDom;
for (var i = 0; i < arrSignatures.length; i++) {
try {
oXmlDom = new ActiveXObject(arrSignatures[i]);
break;
}
catch (ex) { /* ignore */ }
}
oXmlDom.async = false;
oXmlDom.loadXML(str);
oErr = oXmlDom.parseError;
if (oErr.errorCode != 0) {
alert("解析XML数据错误:\n" + oErr.reason + "\nLine:" + oErr.line + "\nLinepos:" + oErr.linepos + "\nsrcText:\n" + oErr.srcText);

return null;
}
创建DOM,读入xml/文件,在DOM对象中对读入的内容操作
dracularking 2008-03-17
  • 打赏
  • 举报
回复
dom做的遍历document Text节点的 比较自己做吧

import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

class Test implements ErrorHandler {

public static void main(String args[]) {
Test test = new Test();
test.go();
}

public void go() {
Document doc = parseXmlFile("test.xml", true);
visit(doc, 0);
}

// This method visits all the nodes in a DOM tree
public static void visit(Node node, int level) {
// Process node

// If there are any children, visit each one
NodeList list = node.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
// Get child node
Node childNode = list.item(i);

if(childNode != null && childNode.getNodeType() == Node.TEXT_NODE) {
System.out.println(childNode.getTextContent());
}

// Visit child node
visit(childNode, level + 1);
}
}

// Parses an XML file and returns a DOM document.
// If validating is true, the contents is validated against the DTD
// specified in the file.
public Document parseXmlFile(String filename, boolean validating) {
try {
// Create a builder factory
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
factory.setValidating(validating);

// Create the builder and parse the file
DocumentBuilder db = factory.newDocumentBuilder();
db.setErrorHandler(this);
Document doc = db.parse(new File(filename));
return doc;
}
catch (SAXException e) {
// A parsing error occurred; the xml input is not valid
}
catch (ParserConfigurationException e) {
}
catch (IOException e) {
}
return null;
}

public void error(SAXParseException exception) throws SAXException {
// TODO Auto-generated method stub

}

public void fatalError(SAXParseException exception) throws SAXException {
// TODO Auto-generated method stub

}

public void warning(SAXParseException exception) throws SAXException {
// TODO Auto-generated method stub

}

}


<books> 
<book email="zhoujunhui">
<name>
<name1>rjzjh</name1>
<name2>rjzjh2</name2>
<name3>rjzjh3</name3>
</name>
<price>
<price1>jjjjjj</price1>
<price2>jjjjjj2</price2>
<price3>jjjjjj3</price3>
</price>
</book>
</books>
padababy 2008-03-17
  • 打赏
  • 举报
回复
能举个例子吗,不是很清楚
dracularking 2008-03-17
  • 打赏
  • 举报
回复
和一般读取xml没什么区别
就是多了个比较的步骤
分别遍历两者节点 比较后输出
padababy 2008-03-17
  • 打赏
  • 举报
回复
有没有做过的,请教中。。。。。。。。。。。。

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧