我的目标是把某一标签下的所有东西都从一个文件复制到别外一个文件中,比如说:
<book>
<Author>Crane20</Author>
<ISBN>GB23132</ISBN>
<description>A book of RubyWed Apr 01 00:25:27 +0800 2009</description>
<id><a>20</a><a>456</a></id>
<title>Dramatic Rubys20</title>
</book>要把<book>里面的东西全取出来,我要的是自动化的,而不是取一个标签,再照着生成。也就是说,如果以后有一个文件含<sss>标签,那么不管他们里面是什么,都能自动取出来。
<id><a>20</a><a>456</a></id>这是专门设计的,就是说元素下还有NODE ELEMENT(<id>下有<a>),而且还不止一个,有多个(例子中有两个<a>)。
请教高手不吝赐教。
<book>
<Author>Crane20</Author>
<ISBN>GB23132</ISBN>
<description>A book of RubyWed Apr 01 00:25:27 +0800 2009</description>
<id><a>20</a><a>456</a></id>
<title>Dramatic Rubys20</title>
</book>要把<book>里面的东西全取出来,我要的是自动化的,而不是取一个标签,再照着生成。也就是说,如果以后有一个文件含<sss>标签,那么不管他们里面是什么,都能自动取出来。
<id><a>20</a><a>456</a></id>这是专门设计的,就是说元素下还有NODE ELEMENT(<id>下有<a>),而且还不止一个,有多个(例子中有两个<a>)。
请教高手不吝赐教。
获得根元素下的所有元素,条件判断下层element,text ,attr.进行相应的得到
应该可以实现
public void display( NodeList nodes){
int size=nodes.getLength();//获得容器的大小
for(int i=0;i<size;i++){
Node node=nodes.item(i);//得到容器中的一个节点
if(node.getNodeType()==Node.ELEMENT_NODE){
Element element=(Element)node;
String name=node.getNodeName();
System.out.print(name);//输出节点
NodeList nodes1=node.getChildNodes();// 递归调用
display(nodes1);
}else if(node.getNodeType()==Node.TEXT_NODE){ //获得字段的值
Text text=(Text)node;
String info=text.getData();//获得文本结点的数据
System.out.println(info); }
}
}
楼主的意思不知是把:
<Author>Crane20 </Author>
<ISBN> Crane20 </ISBN>
<description>A book of RubyWed Apr 01 00:25:27 +0800 2009 </description>
<id> <a>20 </a> <a>456 </a> </id>
<title>Dramatic Rubys20 </title> (第一种数据格式)
全部移动到另一个文件还是把:
Crane20
Crane20
A book of RubyWed Apr 01 00:25:27 +0800 2009
20 456
Dramatic Rubys20 (第二种数据格式)
移动到另一个文件1、如果是第一种那么就很简单了,正则匹配得到<book></book>标签中的内容然后移动就可以了
2、如果是第二种,并且另一个文件只是简单的存储
Crane20
Crane20
A book of RubyWed Apr 01 00:25:27 +0800 2009
20 456
这样格式的信息,那么首先正则匹配得到<book></book>标签中的内容,然后在利用正则表达式去除标签就可以了
3、如果另一个文件是xml文件
那么就采用dom递归解析的思想了,分别把对应的标签放到另一个xml文件内就行了
3.封装XML,并导出,TransformerFactory ,Transfomer.transform(source,result)基本就完成