错误:无法将java.lang.String转换为org.w3c.dom.Node
我正在尝试解析xml字符串,但发现java.lang.string无法转换为org.w3c.dom.Node错误 这是我正在使用的代码:错误:无法将java.lang.String转换为org.w3c.dom.Node,java,xml,xpath,Java,Xml,Xpath,我正在尝试解析xml字符串,但发现java.lang.string无法转换为org.w3c.dom.Node错误 这是我正在使用的代码: XPathFactory xPathFactory = XPathFactory.newInstance(); XPath xPath = xPathFactory.newXPath(); String expression = "//Home/ListOfCustomers"; XPath
XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xPath = xPathFactory.newXPath();
String expression = "//Home/ListOfCustomers";
XPathExpression xPathExpression = xPath.compile(expression);
Object nl = xPathExpression.evaluate(xmlResp);
以下是XML字符串的构造方式:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Home>
<ListOfCustomers type="Regular" count="939">
<Customer>
<CustName>xyz</CustName>
</Customer>
<Customer>
<CustName>abc</CustName>
</Customer>
<Customer>
<CustName>def</CustName>
</Customer>
</ListOfCustomers>
</Home>
我在这里遗漏了什么?只是快速查看一下文档: 然后api为编译定义了以下内容: 项-例如,起始上下文节点或节点列表 因此,假设这是您正在使用的方法,看起来您需要发送一个节点或节点列表,而不仅仅是一个字符串 对象nl=xPathExpression.evaluatexmlResp 这就是问题所在。使用该方法的单个参数,它期望InputSource或Object类型的变量,您是否向其中任何一个声明了xmlResp?另外,这两个方法都返回字符串类型,那么为什么要将其赋值给Object类型的变量呢 既然您有xml文件,为什么不将xmlResp初始化为InputSource类型呢?然后对inputsource使用xPathExpression求值?类似下面的内容
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
public class XMLParser
{
/**
* @param args
*/
public static void main(String[] args)
{
try {
XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xPath = xPathFactory.newXPath();
InputSource doc = new InputSource(new InputStreamReader(new FileInputStream(new File("file.xml"))));
String expression = "//Home/ListOfCustomers";
XPathExpression xPathExpression = xPath.compile(expression);
NodeList elem1List = (NodeList) xPathExpression.evaluate(doc, XPathConstants.NODESET);
xPathExpression = xPath.compile("@type");
for (int i = 0; i < elem1List.getLength(); i++)
{
System.out.println(xPathExpression.evaluate(elem1List.item(i), XPathConstants.STRING));
}
}
catch (XPathExpressionException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@投了反对票但不想留下评论的人:$%&&*$小心,这样的评论可能会让你投更多的反对票。不要亲自投反对票,问问自己是否遵循了和中的指导原则。还要认识到你会得到一些无法解释的反对票。。。这正是SO的本质。有时我也很困惑,看到编程代码在这个问题上投了反对票。对我来说,这些都是sof的有效问题:无论如何,我投你一票。干杯。投票结果也是一样……非常接近。我没有xml文件。它是xml字符串。我并没有首先将其转换为文档。这就是错误所在。@Asdfg太糟糕了,如果我们只有一个字符串,您没有给出建议,例如,在消息服务中,它在这里: