可以在把JAVA包引进去,然后使用XPATH指定路径就可以取得值拉
import org.jdom.Document;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;import org.jaxen.XPath;
import org.jaxen.XPathSyntaxException;
import org.jaxen.JaxenException;import org.jaxen.jdom.JDOMXPath;import java.util.List;
import java.util.Iterator;public class JDOMDemo
{
public static void main(String[] args)
{
if ( args.length != 2 )
{
System.err.println("usage: JDOMDemo <document url> <xpath expr>");
System.exit( 1 );
} try
{
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build("xml文件");
XPath xpath = new JDOMXPath("/ResourceParams/parameter/name");//你所查找得路径
List results = xpath.selectNodes( doc );
Iterator resultIter = results.iterator();
while ( resultIter.hasNext() )
{
String name = resultIter.getText();//取得指定路进下得值 密码也是一样得方法
}
}
catch (JDOMException e)
{
e.printStackTrace();
}
catch (XPathSyntaxException e)
{
System.err.println( e.getMultilineMessage() );
}
catch (JaxenException e)
{
e.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
import org.jdom.Document;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;import org.jaxen.XPath;
import org.jaxen.XPathSyntaxException;
import org.jaxen.JaxenException;import org.jaxen.jdom.JDOMXPath;import java.util.List;
import java.util.Iterator;public class JDOMDemo
{
public static void main(String[] args)
{
if ( args.length != 2 )
{
System.err.println("usage: JDOMDemo <document url> <xpath expr>");
System.exit( 1 );
} try
{
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build("xml文件");
XPath xpath = new JDOMXPath("/ResourceParams/parameter/name");//你所查找得路径
List results = xpath.selectNodes( doc );
Iterator resultIter = results.iterator();
while ( resultIter.hasNext() )
{
String name = resultIter.getText();//取得指定路进下得值 密码也是一样得方法
}
}
catch (JDOMException e)
{
e.printStackTrace();
}
catch (XPathSyntaxException e)
{
System.err.println( e.getMultilineMessage() );
}
catch (JaxenException e)
{
e.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
symbol : method getText ()
location: interface java.util.Iterator
String name = resultIter.getText();楼上的出现错误了。
是怎么回事呢??
应该怎么解决呢??
谢谢!!!
jdom里面的Element有getText()
可我这样写Iterator resultIter = (Element)results.iterator();
不行啊
什么原因呢???
<?xml version='1.0' encoding='GBK'?>
<connectdb>
<sSID>prod</sSID>
<sUser>apps</sUser>
<sPassword>apps</sPassword>
<sServerIP>192.168.1.214</sServerIP>
<sPort>1521</sPort>
<sURL>http://192.168.1.214:8000/OA_HTML/webreport/</sURL>
</connectdb> //jdom.java
import java.io.*;
import java.net.URL;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import org.jdom.*;
import org.jdom.JDOMException;
import org.jdom.input.*;
import org.jdom.output.*;
public class jdom {
public String sSID =null;
public String sUser=null;
public String sPassword=null;
public String sServerIP=null;
public String sPort=null;
public String sURL=null;
public void init(String XML_PATH)throws IOException, JDOMException{
int listsize;
String connectstr =null;
//
SAXBuilder builder = new SAXBuilder();
// expand entities within the SAXBuilder
builder.setExpandEntities( true );
String filePath=XML_PATH+"/connectDB.xml";
filePath=filePath.toString();
File myFilePath=new File(filePath);
Document doc = builder.build(myFilePath);
Element root = doc.getRootElement(); //得到根元素
java.util.List list1 = root.getChildren(); //得到根元素所有子元素的集合
listsize=list1.size();
for (int i=0;i<=listsize -1;i++){
Element connectdb = (Element)list1.get(i);
connectstr=connectdb.getName().toString();
if (connectstr.equals("sSID")){
sSID = connectdb.getValue().toString();
};
if (connectstr.equals("sUser")){
sUser = connectdb.getValue().toString();
};
if (connectstr.equals("sPassword")){
sPassword = connectdb.getValue().toString();
};
if (connectstr.equals("sServerIP")){
sServerIP= connectdb.getValue().toString();
};
if (connectstr.equals("sPort")){
sPort = connectdb.getValue().toString();
};
if (connectstr.equals("sURL")){
sURL = connectdb.getValue().toString();
};
}
}
};
Iterator里面没有getText()函数
jdom里面的Element有getText()
可我这样写Iterator resultIter = (Element)results.iterator();
不行啊
什么原因呢???
--------------------------------------
正确的写法应该是
String name = ((Element)resultIter.next()).getText();//取得指定路进下得值 密码也是一样得方法
我在dos界面下javac 无错,
java:时出错
D:\Program Files\Tomcat 4.1\webapps\ROOT\WEB-INF\classes>java JDOMDemo
Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/JaxenExcept
ion
可我的包jaxen-core.jar在jdk的\jre\lib\ext目录下,而且这个包里面有这个class文件
第二个参数该怎么设置???
我这样写还是有错误:
javac JDOMDemo server.xml /ResourceParams/parameter/name
server.xml在同一个目录下,
还是有错误
郁闷啊
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.xpath.XPath;public class JDOMDemo { public static void main(String[] args) throws JDOMException {
if (args.length != 1) {
System.err.println("usage: JDOMDemo <document url>");
System.exit(1);
} Document config = readFromFile(args[0]);
String username =
((Element) XPath
.selectSingleNode(
config.getRootElement(),
"//parameter[name = 'username']/value"))
.getTextTrim();
String password =
((Element) XPath
.selectSingleNode(
config.getRootElement(),
"//parameter[name = 'password']/value"))
.getTextTrim();
System.out.println("username is " + username);
System.out.println("password is " + password);
} //读取文件(带根目录的绝对路径),生成Document对象
public static Document readFromFile(String path) {
//...
}
}
用到了xpath支持,不知道会不会给楼主造成其他的麻烦
已经解决了。