1
我試圖從嵌套標記中讀取值,並且遇到問題。從嵌套標記中獲取包含在字符串中的XML值
我的XML文件叫NewFile.xml我想讀取tag4中的值。
<?xml version="1.0"?>
<tag1>
<tag2>
<tag3>
<tag4>read me</tag4>
</tag3>
</tag2>
</tag1>
這裏是稱爲Test.java主類讀取XML文件,並將其覆羽串並將其發送中讀取器類稱爲lookUpValue的方法。
public class test {
public static void main(String [] args) throws IOException, XPathExpressionException
{
BufferedReader br = new BufferedReader(new FileReader(new File("NewFile.xml")));
String xmlString;
StringBuilder sb = new StringBuilder();
while((xmlString=br.readLine())!= null){
sb.append(xmlString.trim());
}
xmlString = sb.toString();
System.out.print(reader.LookUpValue(xmlString));
br.close();
}
}
這裏是讀者類和方法LookupValue:
import java.io.StringReader;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.xml.sax.InputSource;
public class reader{
public static String LookUpValue(String sb) throws XPathExpressionException
{
InputSource source = new InputSource(new StringReader(sb));
XPath xpath = XPathFactory.newInstance().newXPath();
Object customer = xpath.evaluate("/tag1/tag2/tag3", source, XPathConstants.NODE);
String value = xpath.evaluate("tag4", customer);
return ("Value is: " + value);
}
}
我的問題是我怎麼能讀取裏面TAG4的價值,現在,當我運行這個程序,我得到以下錯誤。
Exception in thread "main"
javax.xml.transform.TransformerException: Unable to evaluate expression using this context
at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:363)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.eval(XPathImpl.java:213)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:275)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:365)
at reader.LookUpValue(LookUpValue.java:21)
at test.main(test.java:26)
Caused by: java.lang.RuntimeException: Unable to evaluate expression using this context
at com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(NodeSequence.java:212)
at com.sun.org.apache.xpath.internal.axes.LocPathIterator.execute(LocPathIterator.java:210)
at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:335)
... 5 more
---------
java.lang.RuntimeException: Unable to evaluate expression using this context
at com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(NodeSequence.java:212)
at com.sun.org.apache.xpath.internal.axes.LocPathIterator.execute(LocPathIterator.java:210)
at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:335)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.eval(XPathImpl.java:213)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:275)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:365)
at reader.LookUpValue(LookUpValue.java:21)
at test.main(test.java:26)
--------------- linked to ------------------
javax.xml.xpath.XPathExpressionException
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:289)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:365)
at reader.LookUpValue(LookUpValue.java:21)
at test.main(test.java:26)
Caused by: javax.xml.transform.TransformerException: Unable to evaluate expression using this context
at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:363)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.eval(XPathImpl.java:213)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:275)
... 3 more
Caused by: java.lang.RuntimeException: Unable to evaluate expression using this context
at com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(NodeSequence.java:212)
at com.sun.org.apache.xpath.internal.axes.LocPathIterator.execute(LocPathIterator.java:210)
at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:335)
... 5 more
是顧客走出空IDK這是爲什麼...... –
當我打印出了XmlString它打印機出這個'<?XML版本= 「1.0」?>我讀 '這是正確的價值。 –