好辛苦啊!!我做了尽一个月的XML解析的探索.几乎是没人指导的情况下,今天我终于找到了一个方法可以很简单的得到我要的准确答案.
XML::例子
<?xml version="1.0" encoding="gb2312"?>
<row>
<person>
<name>王明 </name>
<college>交通学院 </college>
<telephone>88888888</telephone>
<notes>男,1975年生 </notes>
</person>
</row>
我们要按路径 "row.person.name" 得到 "王明"
下面提供我的一段代码,希望能给大家带来帮助,
public class ARXmlParser
{
protected static Document m_objDocument = null;
/**
* Constructs an CXmlDealer instance
*/
public ARXmlParser()
{
}
/**
* parse the file with a given file path
* @param vstrDocument :the location of the file
*/
protected void loadXMLDocument(String v_strPath)
{
try
{
DocumentBuilderFactory domFactory =DocumentBuilderFactory.newInstance();
domFactory.setValidating(true);
DocumentBuilder db=domFactory.newDocumentBuilder();
db.setErrorHandler(new MyException());
m_objDocument=db.parse(new File(v_strPath));
}
catch (SAXException se)
{
System.out.println(se);
System.exit(0);
}
catch (java.io.IOException e)
{
System.out.println(e);
}
catch (Exception pce)
{
System.out.println(pce);
}
}
protected String querySingleField(Document v_objDocument, String v_strXPath)
{
Element element = null;
try
{
element = (Element)XPathAPI.selectSingleNode(v_objDocument.getDocumentElement(),processString(v_strXPath));
}
catch (TransformerException e)
{
e.printStackTrace();
}
return ((Text)element.getFirstChild()).getNodeValue();
}
private String processString(String v_strArray)
{
return "//"+v_strArray.replace('.','/');
}
}