楼上的连题都不看,随便在网上找了个代码就贴上去了!byte[] buffer = new byte[128]; int len = 0; InputStream inputStream = request.getInputStream(); ByteArrayOutputStream bytes = new ByteArrayOutputStream();
while((len = inputStream.read(buffer)) >= 0) { bytes.write(buffer, 0, len); } DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = docFactory.newDocumentBuilder(); StringReader reader = new StringReader(bytes.toString()); BufferedReader br = new BufferedReader(reader); InputSource is = new InputSource(br); Document document = builder.parse(is); //这问题主要是如何用DocumentBuilder来解析流文件。 //已经得到document了,下面的事情就好办了,你自己写一下吧。 System.out.println(document.getElementsByTagName("y").item(0).getFirstChild().getNodeValue());
import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;public class DOMUtil {
public static Document getDoc(File f){//f为xml文件
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
Document doc=null;
try {
DocumentBuilder builder = factory.newDocumentBuilder();
doc= builder.parse(f);
} catch (Exception e) {
e.printStackTrace();
}
return doc;
}}
public class Test {
public static void main(String[] args) {
Document doc=DOMUtil.getDoc(new File("./User.hbm.xml"));
Element root = doc.getDocumentElement();//得到根结点
System.out.println(root.getTagName());
//读结点
/***************************************/
NodeList children = root.getChildNodes();
System.out.println(children.getLength());//子结点个数
for(int i=0;i<children.getLength();i++){//遍历整个结点
System.out.println(i+1+"->"+children.item(i));
}
//读结点中的值
/***************************************/
//知道字段
String value=root.getAttribute("package");//得到指定结点中的某个字段
System.out.println("package="+value);
//不知道字段
NamedNodeMap atts=root.getAttributes();
System.out.println(atts.getLength());
for(int i=0;i<atts.getLength();i++){
Attr att = (Attr)atts.item(i);
System.out.println((i+1)+"-->"+att.getName()+att.getValue());//得到属性名,值
}
}
}
int len = 0;
InputStream inputStream = request.getInputStream();
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
while((len = inputStream.read(buffer)) >= 0) {
bytes.write(buffer, 0, len);
}
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = docFactory.newDocumentBuilder();
StringReader reader = new StringReader(bytes.toString());
BufferedReader br = new BufferedReader(reader);
InputSource is = new InputSource(br);
Document document = builder.parse(is);
//这问题主要是如何用DocumentBuilder来解析流文件。
//已经得到document了,下面的事情就好办了,你自己写一下吧。
System.out.println(document.getElementsByTagName("y").item(0).getFirstChild().getNodeValue());
private Document doc; SAXReader xml_read = new SAXReader(); /**
* 建立数据文件的读取连接
*
* @return 读取成功时返回Document对象,失败则返回空
*/
public static Document getDocument() { Document doc1 = null;
ConfigManager xmlConfig = new ConfigManager(//获取xml文件路径
"./servConfig/xmlConfig.ini");
File file = new File(xmlConfig.getValue("xml_path"));
SAXReader xml_read = new SAXReader();
try {
doc1 = xml_read.read(file);//读取xml文件的内容
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
return doc1;//得到document.这里相当于得到数据源的连接,把它想成oracle的connection
}//有了连接,就可以从xml获取我们需要的数据了,如以下的读取xml的一个用户数据
/**
* 查找用户数据,
*
* @param doc
* 要查找的数据文件
* @param id
* 通过用户id条件精确查询
*
*/
private Element search_user(Document doc, String id) { Element root = doc.getRootElement();
String xml_path = "/users/user[@sid='" + id + "']";//这里是源文件的路径
Node node = root.selectSingleNode(xml_path);
if (node != null) {//如果结点不为空
if (node.getNodeType() == Node.ELEMENT_NODE) {
return (Element) node;
}
} return null;
}
楼主首先要明白xml的结构语法。才能明白去解析xml的内容
public class Conhander implements ContentHandler { private Writer out; public Conhander(Writer out) {
this.out = out;
} @Override
public void characters(char[] text, int start, int length) throws SAXException {
// 返回xml数据 try { out.write(text, start, length);
} catch (IOException e) {
throw new SAXException(e);
} }
}