//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() 方法
到底怎么用的?取元素值的时候要用哪个?
<?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() 方法
到底怎么用的?取元素值的时候要用哪个?
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>