思路:利用jasp进行dom方式解析
《基本操作就这些,必须会》
1,得到解析工厂DocumentBuilderFactory
DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
2, 得到解析器 DocumentBuilder
DocumentBuilderbuilder=factory.newDocumentBuilder();
3,解析指定的xml文档,得到代表内存dom树的document对象
Document document=builder.paser("xx.xml");
练习:
(1)得到某个具体的节点内容,打印第2本书的作者
public static voidtest1(Document document)
{
//根据标签名称获取所有的作者元素
NodeList n1=document.getElementByTagName("");
//按照索引取第二个作者元素
Node node=n1.item(1);
//打印文本元素
String text=node.getTextContent();
System.out.println(text);
}
(2).遍历所有元素节点,打印元素的名称
public static voidtest2(Document document)
{
//判断当前节点是不是一个元素节点
//short type=node.getNodeType();
if(node.getNodeType()==Node.ELEMENT_NODE)
{
//如果是,打印他的名称
System.out.println(node.getNodeName());
}
//如果不是,找到他的孩子们
NodeListn1=node.getChildNodes();
intlen=n1.getLength();
for(inti=0;i
{
//遍历孩子:递归
Node n =n1.item(i);
test2(n);
}
}
3,修改某个元素节点的主题内容,把第一本书的售价改为xx
public static void test3(Document document)
{
//找到第一本书的售价
NodeListna=document.getElementByTagName("");
//设置其主体的内容
Node node=na.item(0);
node.setTextContext("xx");
TransformerFactoryfacotry=TransformerFactory.newInstance();
Transformerts=factry.newTransformer();
ts.transform(newDOMSource(document),new StreamResult("文件地址"));
}
4.向指定元素节点中增加子元素节点,
public static void test4(Documentdoucment)
{
//创建一个新的元素并设置其主题内容
Element e=document.createElement_x("内部价");
e.setTextContext("00");
//找到第一个对象,改变第一个对象
NodefirstBookNode=document.getElementsByTagName_r("书").item(0);
fristBookNode.appendChild(e);
//把内存中的Document 树写回xml文件中
TransformerFactory facotry=TransformerFactory.newInstance();
Transformerts=factry.newTransformer();
ts.transform(new DOMSource(document),newStreamResult("文件地址"));
}
5.向指定元素节点上增加同级元素节点(改变顺序)
public static void test5(Document document)
{
//创建一个新的元素并设置其中的主题内容
Element e=document.createElent("");
e.setTextContent("00");
//找到第一对象
Nodeduixiang=document.getElementByTagName("添加的标签").item(0);
//添加顺序改变(其实就是插入的位置)
duixiang.getParentNode().insertBefore(e.duixiang);
//把内存中的Document树写回xml文件中
TransformerFactory facotry=TransformerFactory.newInstance();
Transformerts=factry.newTransformer();
ts.transform(new DOMSource(document),new StreamResult("文件地址"));
}
6.删除指定元素节点:删除内部价
public static void test6(Document document)
{
//找到节点,用父删除
Noden=document.getElementsByTagName_r("xx").item(0);
n.getParentNode().removeChild(n);
//把内存中的Document 树写回xml文件中
TransformerFactory facotry=TransformerFactory.newInstance();
Transformerts=factry.newTransformer();
ts.transform(new DOMSource(document),newStreamResult("文件地址"));
}
7.操作xml文件属性,打印第一本书的出版社
public static void test7(Documentdocument)
{
//得到对象
Noden=document.getElementByTagName("").item(0);
//打印指的的属性取值
Element e=(Element)n;
}
8.给对象添加属性
public static voidtest8(Document document)
{
//得到对象
Noden=document.getElementByTagName("").item(0);
//打印指的的属性取值
Element e=(Element)n;
e.setAttrubute("属性名","内容");
}