//xml文档
<?xml version="1.0" encoding="UTF-8"?>
<root>
<node>
<name>node1</name>
<value>value1</value>
</node>
<node>
<name>node2</name>
<value>value2</value>
</node>
<node>
<name>node3</name>
<value>value3</value>
</node>
</root>
//代码
public class test003 {
public static void main(String[] args) {
SAXReader reader = new SAXReader();
Document doc = null;
try {
doc = reader.read(new File("test.xml"));
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

Element nodetest = doc.getRootElement();
nodetest.accept(new MyVisitor());
}
}class MyVisitor extends VisitorSupport {
public void visit(Element element) {
System.out.println("visit11");
// System.out.println(element.getName());
System.out.println(element.getName()+"="+element.getStringValue());
}
public void visit(Attribute attr) {
System.out.println("visit22");
// System.out.println(attr.getName());
// System.out.println(attr.getName()+"="+attr.getStringValue());
}
}
//运行结果
visit11
root=

node1
value1


node2
value2


node3
value3
visit11
node=
node1
value1

visit11
name=node1
visit11
value=value1
visit11
node=
node2
value2

visit11
name=node2
visit11
value=value2
visit11
node=
node3
value3

visit11
name=node3
visit11
value=value3
看到这个我真的很费解,为什么没有调用visit(Attribute attr)方法?怎么调用visit(Element element)又这么频繁还有Attribute里的 getValue(), valueOf() 方法
以及Node里的 getText(), getStringValue() 方法
到底怎么用的?取元素值的时候要用哪个?

解决方案 »

  1.   

    这个问题,楼主自己去查一下API,不过你仔细的看一下程序,设一下调试,就知道,他是循环这调用的,从外层到每一个内层去解析,就跟递归差不多。还有没有调用那个方法,不知道我看明白没有,也运行了一下,就是它本身的就是参数是Element ,又怎么会去调用visit(Attribute attr)。
      

  2.   

    API我之前查过,解释都差不多的1. getValue
    public String getValue()Returns the value of the attribute. This method returns the same value as the Node.getText()method. Returns:
    the value of the attribute
    2. getText
    public String getText()Returns the text of this node. Returns:
    the text for this node
    3. getStringValue
    public String getStringValue()Returns the XPath string-value of this node. The behaviour of this method is defined in the XPath specification . Returns:
    the text from all the child Text and Element nodes appended together.我没有系统的学xml,所以概念都很模糊,像这里面the value of the attribute, the text of this node, XPath string-value of this node根本分不清
    而且我一直以为带值的就是Attribute,像前面的name, value, 然后node是Element如果xml文件有三级怎么办??不要BS
    <root>
      <node>
        <subnode>
          <value>XXX</value>
        </subnode>
      </node>
    </root>