进入黑马day2-解析xml三种方法(1)jaxp解析

jaxp解析:

//1.获取解析器工厂

DocumentBuilderFactory builderFactory =DocumentBuilderFactory.newInstance();

//2.获取解析器

DocumentBuilderbuilder =builderFactory.newDocumentBuilder();

//3.解析book.xml

Documentdom = builder.parse("book.xml");

//获取第一本书的售价

Stringprice = dom.getElementsByTagName("售价").item(0).getTextContent();

System.out.println(price);

//添加特价节点

//1、.创建特价节点,设置特价节点的标签体为 9.9元

Elementprice2Ele = dom.createElement("特价");

price2Ele.setTextContent("9.9元");

//2、.获取父节点<书>

NodebookNode = dom.getElementsByTagName("书").item(0);

//3、将创建的<特价>节点挂载到父节点上

bookNode.appendChild(price2Ele);

在特价节点插入<作者>节点

//1、参考节点<作者>

NodeauthNode = dom.getElementsByTagName("作者").item(0);

//2、在指定位置增加子节点

bookNode.insertBefore(price2Ele,authNode);

//修改节点标签体

//1、.获取<特价>

Nodeprice2Node = dom.getElementsByTagName("特价").item(0);

//2、.修改<特价>节点的标签体

price2Node.setTextContent("8.8元");

//删除节点

//1、获取想要删除的节点<特价>

Nodeprice2Node = dom.getElementsByTagName("特价").item(0);

//2、取想要删除的节点的父节点<书>

NodebookNode = price2Node.getParentNode();

//3、节点上删除子节点

bookNode.removeChild(price2Node);

//增加属性

//1、取属性所在的<书>节点

ElementbookNode = (Element)dom.getElementsByTagName("书").item(0);

//2、属性

//bookNode.setAttribute("出版社", "人民出版社");

//获取属性

//Stringvalue = bookNode.getAttribute("出版社");

//System.out.println(value);

//修改属性

bookNode.setAttribute("出版社", "人民教育出版社");

//删除属性

bookNode.removeAttribute("出版社");

//最后更新xml文件

//7.1获取转换器工厂

TransformerFactorytransformerFactory = TransformerFactory.newInstance();

//7.2获取转换器

Transformertransformer =transformerFactory.newTransformer();

//transformer.setOutputProperty(OutputKeys.ENCODING,"gb2312");

//7.3将内存中的dom转化为book.xml的xml格式的数据

//FileOutputStreamoutputStream = new FileOutputStream("book.xml");

FileWriterwriter = new FileWriter("book.xml");

transformer.transform(newDOMSource(dom), new StreamResult(writer));

}

附:xml文件节点方法

//遍历所有的节点
@Test
public void list() throws Exception{
//1、获取解析器工厂
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
// 2、获取解析器
DocumentBuilder builder = builderFactory.newDocumentBuilder();
// 3、解析book.xml
Document dom = builder.parse("book.xml");

getNodes(dom);

}
public void getNodes(Node node){
if(node.getNodeType()==Node.ELEMENT_NODE){
System.out.println(node.getNodeName());
}
if(node.getNodeType()==Node.ELEMENT_NODE||node.getNodeType()==Node.DOCUMENT_NODE){
if(node.hasChildNodes()){
NodeList nodeList = node.getChildNodes();
for(int x = 0;x<nodeList.getLength();x++){
node = nodeList.item(x);
getNodes(node);
}
}
}
if(node.getNodeType()==Node.TEXT_NODE){
if(node.getTextContent().trim().length()!=0){
// if(!node.getTextContent().trim().equals("")){都行
System.out.println(node.getTextContent());}
}
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值