XML有很多节点如
<root>
    <child>
        <root>
             <child>son</child>
        </root>
    </child>
</root>
<root>
    <child>
        <root>
             <child>daughter</child>
        </root>
    </child>
</root>尽管生活中一般不会遇到这样定义XML的方法,但是如果要针对这些不规则的XML的,命名比较意外的XML,如何设计一个通用性强的XML读取类?
当节点很多的时候,是用递归还是面向对象的方法?如果面向对象的话,如何判断是自己想要的那个节点?求设计思路或者类似教程。

解决方案 »

  1.   

    递归是手段,面向对象是一种思想。
    你可以把对这种不规则的xml解析操作放到一个java类中,这个类只有对xml解析的操作(这是一个对象功能抽象的思想),具体实现某个功能(例如查找某个节点名为"name"的),这时候使用递归的思想。感觉XML在各种强大的解析工具面前,已经完全“赤裸”了,任何节点、节点名、属性、节点值等,都能取出来进行判断的。另外,标准XML第一样要有<?xml version="1.0"...  
      

  2.   

     什么情况下需要解析XML呀?
      

  3.   


    问题就在于采取哪样一种思想。递归本身也是一种思想。比如递归 getContent(String [] Condition){
         if(Condition=="")
         {getContent(String [] Condition)}
     
    }
    面向对象的话,我记得有一个模式可以循环读取的,不管子节点的结构,忘记哪一种了,请问面向对象的方法如何去解决复杂的XML结构呢
      

  4.   

    XML格式多种多样
    你可以这样 <root>
    <child>son</child>
    </root>
    <root>
    <child>daughter</child>
    </root>
    其实你还可以这样 <property name="root.child.count" value="2"/>
    <property name="root.child.0" value="son"/>
    <property name="root.child.1" value="daughter"/>
      

  5.   

    做几个简单的查询
    1.root下有几个child
    2.取第n个child
    你觉的哪种格式方便?第二种格式配合XPath能写出非常简洁的代码。
      

  6.   

    解析XML的库那么多,为啥要自己写?
      

  7.   

    做几个简单的查询
    1.root下有几个child
    2.取第n个child
    你觉的哪种格式方便?第二种格式配合XPath能写出非常简洁的代码。我现在在于求解如何用组合模式来解决这个问题
      

  8.   

    http://stackoverflow.com/questions/373833/best-xml-parser-for-java
    这个帖子相当好,还可以顺便学E文
      

  9.   

    JDOM, DOM4J等等,比较适合初学者。
    读:
    对于,知道了特定取值路径的可以考虑用Xpath。
    如果需要写入数据库的,推荐JAXB。
    需要直接显示的推荐SAX,StAX。写:
    推荐StAX。
    如果是从结构表,或者数据里读取,可以考虑JAXB。
    结合Spring和Hibernate,可以缩小代码量。
    但是,速度肯定会降低。
      

  10.   

    大拿。能不能给推荐点JAVA,ANDROID,并发,还有游戏设计方面的书籍呢?
      

  11.   

    Android和游戏我不懂。Java的话Effective Java是提高必读,并发方面Java Concurrency In Practice是宝典。当然Design Patterns是必备参考。
      

  12.   

    我怎么觉得lz说的根大家回答的不是一回事呢?
    lz举的那个例子明显是个非标准的xml文件,即它有两个root,格式不正确的xml文件好像不能用库来读取吧?我举个更极端的例子
    <html>
      <head>
        <title>团结就能达到1=1>2的效果</title>
      </head>
      <body class=myclass>
        <div>
          <A href='http://www.baidu.com'><font color=red>点击</a></Font>
      </body>
    </html>
    很变态吧,到处都是不符合xml规范的地方
    你也许会说“你自己写规范点”,但是有时一些东西不是在自己控制之下的,你只能读