您的位置:首页 > 其它

Webservice_10_Stax的基本操作(XPath方式读取xml,用XMLStreamReader创建Xml,用Transformer更新节点信息)

2013-07-31 15:35 591 查看
非常感谢孙浩老师。

XPath方式读取xml

/**
* @Title: test06
* @Description: 用XPath方式读取xml。得到foodId='food_002'的name元素的值。
* @param
* @return void
* @throws
*/
@Test
public void test06() {
InputStream is = null;
try {
is = TestStax.class.getClassLoader().getResourceAsStream(
"menus.xml");
// 创建文档处理对象
DocumentBuilder db = DocumentBuilderFactory.newInstance()
.newDocumentBuilder();
// 通过DocumentBuilder创建doc的文档对象
Document doc = db.parse(is);
// 创建XPath
XPath xpath = XPathFactory.newInstance().newXPath();
// 第一个参数就是xpath,第二参数就是文档
NodeList list = (NodeList) xpath.evaluate(
"//food[@foodId='food_002']", doc, XPathConstants.NODESET);
for (int i = 0; i < list.getLength(); i++) {
// 遍历输出相应的结果
Element e = (Element) list.item(i);
System.out.println(e.getElementsByTagName("name").item(0)
.getTextContent());
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XPathExpressionException e) {
e.printStackTrace();
} finally {
try {
if (is != null)
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}





用XMLStreamReader创建Xml

/**
* @Title: test07
* @Description: 使用XMLStreamReader创建Xml
* @param
* @return void
* @throws
*/
@Test
public void test07() {
try {
XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(System.out);
writer.writeStartDocument("UTF-8", "1.0");
writer.writeEndDocument();
String namespace = "http://1342334";
writer.writeStartElement("xsd","coder",namespace);
writer.writeStartElement(namespace,"name");
writer.writeCharacters("lichen");
writer.writeEndElement();
writer.writeEndElement();
writer.flush();
writer.close();
} catch (XMLStreamException e) {
e.printStackTrace();
} catch (FactoryConfigurationError e) {
e.printStackTrace();
}
}



 

用Transformer更新节点信息

/**
* @Title: test08
* @Description: 使用Transformer更新节点信息
* @param
* @return void
* @throws
*/
@Test
public void test08() {
InputStream stream = TestStax.class.getClassLoader().getResourceAsStream("menus.xml");
try {
//创建文档对象
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.parse(stream);
//创建XPath
XPath xpath = XPathFactory.newInstance().newXPath();
Transformer tran = TransformerFactory.newInstance().newTransformer();
tran.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
tran.setOutputProperty(OutputKeys.INDENT, "yes");
//第一个参数就是xpath,第二参数就是文档
NodeList list = (NodeList)xpath.evaluate("//food[name='Strawberry Belgian Waffles']", document,XPathConstants.NODESET);
//获取price节点
Element be = (Element)list.item(0);
Element e = (Element)(be.getElementsByTagName("price").item(0));
e.setTextContent("$1234");
Result result = new StreamResult(System.out);
//通过tranformer修改节点
tran.transform(new DOMSource(document), result);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerFactoryConfigurationError e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
} catch (XPathExpressionException e) {
e.printStackTrace();
}
}




-----------------------------------------------修改过----------------------------------------------

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Webservice XML
相关文章推荐