有两篇文章说的非常好,在IBM上:
1.利用 Java 技术进行 XML 编程,第 1 部分
http://www-900.cn.ibm.com/developerWorks/cn/cnedu.nsf/java-onlinecourse-bytitle/645C88257162286CC8256E350021E615?OpenDocument
2.利用 Java 技术进行 XML 编程,第 2 部分
http://www-900.ibm.com/developerWorks/cn/cnedu.nsf/xml-onlinecourse-bytitle/D12DBCC391F769F1C8256EDD00080ECE?OpenDocument
看文章可能需要你登录一下,如果没有注册一个好了:)

解决方案 »

  1.   

    “就是能对xml中的各个节点进行查找(给出节点名,查找节点值)”
    这个好实现,用jdom的xpath就可以搞定,如下:
    public String getElementValue(Document doc, String elementName) throws JDOMException {
        return (String) XPath.selectSingleNode(doc, "//" + elementName);
    }但“更新xml文档(更新给出的接点)”这样的需求,我还是没能理解
    不妨把你认为应该是的方法参数和返回值写下来,再把要实现的功能详细说一说
      

  2.   

    比如:<bookList> <book hot1="true">  <author>王五</author>
    </book>
    这样的,只要穿进去bookList,book,author,name这样的话,就能把"王五"改成name
    应该怎么写??如果要是在没有的基础上增加,应该怎么办?就是在加个元素。
    帮帮忙了,我以前从来没有写过操作xml的程序。
      

  3.   

    不好意思,才发现第一个方法写错了
    应该是
    public String getElementValue(Document doc, String elementName) throws JDOMException {
        return (String) XPath.selectSingleNode(doc.getRootElement(), "//" + elementName);
        }
      

  4.   

    晕死,今天怎么了
    一个方法写错两次下面是更新后的
    并添加了实现第二个功能的方法
    api为jdom b9    public String getElementValue(Document doc, String elementName) throws JDOMException {
            return ((Element) XPath.selectSingleNode(doc.getRootElement(), "//" + elementName)).getTextTrim();
        }
        
        //修改某个Element的值
        //如果该Element不存在,则先添加
        //参数说明:
        //doc   org.jdom.Document 被修改的xml对象
        //xpath java.lang.String 想要修改的Element路径,采用“xxx/xxx/xxx”的形式
        //value java.lang.String 想要修改的Element的值
        //注:本方法为demo,没有涉及任何异常处理
        public void modifyElement(Document doc, String xpath, String value) throws JDOMException {
            String[] pathes = xpath.split("/");
            Element tempEle = null;
            String path = null;
            for (int i = 0; i < pathes.length; i++) {
                path = pathes[i];
                if (tempEle == null) {
                    tempEle = (Element) XPath.selectSingleNode(doc.getRootElement(), "//" + path);
                    if (tempEle == null) {
                        tempEle = new Element(path);
                        doc.getRootElement().addContent(tempEle);
                    }
                } else if (tempEle.getChild(path) != null) {
                    tempEle = tempEle.getChild(path);
                } else {
                    tempEle.addContent(new Element(path));
                    tempEle = tempEle.getChild(path);
                }
            }
            tempEle.setText(value);
        }
      

  5.   

    我按照你说的,怎么有错误?
    java.lang.NoClassDefFoundError: org/saxpath/SAXPathException
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:141)
    at org.jdom.xpath.XPath.newInstance(XPath.java:126)
    at org.jdom.xpath.XPath.selectSingleNode(XPath.java:368)
    at Test.getElementValue(Test.java:52)
    at Test.main(Test.java:49)
    Exception in thread "main"
      

  6.   

    我这样进行查找
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.JDOMException;
    import org.jdom.input.SAXBuilder;
    import org.jdom.xpath.XPath;
    public class Test {
    public static void main(String[] args) throws Exception {
                      String fileName = System.getProperty("user.dir");
    String trace = fileName+"\\sampleA.xml"; 
    SAXBuilder builder = new SAXBuilder();
    Document doc =builder.build(trace);
           String ss=getElementValue(doc,"ID");

    }
    public static String getElementValue(Document doc, String elementName) throws JDOMException {
       return ((Element) XPath.selectSingleNode(doc.getRootElement(), "//" + elementName)).getTextTrim();
       }}
    出现错误,是什么原因?
      

  7.   

    哦,xpath需要额外的包支持
    去下载最新的jdom api吧
    应该已经集成了我用的jdom b9 + dom4j-full.jar
    后者包含了jdom需要的用以支持xpath的jar包
      

  8.   

    我用的是jdom b10
    用的工具是eclipse2.1
      

  9.   

    b10里有一个saxpath.jar
    把它加入到eclipese项目的classpath中
      

  10.   

    好像还有jaxen-core.jar和jaxen-jdom.jar是要用到的