1
XML에서 중첩 된 태그의 값을 읽는 중 문제가 발생했습니다.XML에 대한 중첩 태그의 값을 문자열에 포함하십시오.
내 XML 파일 NewFile.xml tag4의 값을 읽으려고합니다.
<?xml version="1.0"?>
<tag1>
<tag2>
<tag3>
<tag4>read me</tag4>
</tag3>
</tag2>
</tag1>
여기에 해당 XML 파일을 읽고 문자열로 변환한다과 리더 클래스에 lookUpValue라는 방법을 전송 Test.java라는 메인 클래스입니다.
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 내부의 값을 읽을 수있는 방법입니다 : 여기
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입니다.
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
예 고객이 null 이유입니다 IDK 나오고 ... –
을 나는 = "1.0"? XML 버전>은이'밖으로 프린터 용 xmlString을 인쇄 할 때 나에게 읽기 '올바른 값입니다. –