我正在尝试在这里学习一些 XML 解析,并且我已经获得了一些代码来开始。我已经对我正在使用的不同 API 进行了一些研究,并且我逐渐能够将我的代码调试成我希望能够工作的东西。我试图通过将 XPath 查询硬连接到字符串变量来解析 XML 文件。如果有帮助的话,我也在使用 DocumentBuilderFactory。无论如何,我不断收到此异常:Java.lang.String 无法转换为 org.w3c.dom.Node(我已在下面的代码中对其进行了标记)。我明白错误是什么。字符串查询似乎与“评估”方法的参数不一致。只是不知道如何解决它。我尝试了各种不同的演员阵容,但它们都不起作用。有些东西告诉我我在这里做错了什么......请帮忙!PS。对不起,我的代码有点乱,我对解析完全陌生,我也知道有一些不必要的导入,但我想如果我进行一些更改,我可能需要它们。
代码:
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import org.jaxen.JaxenException;
import org.jaxen.dom.DOMXPath;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
import java.io.File;
import java.io.IOException;
import java.util.List;
public class Parser
{
public static void main(String[] args)
{
boolean isNamespaceAware = true;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(isNamespaceAware);
DocumentBuilder builder = null;
try
{
builder = dbf.newDocumentBuilder();
}
catch (ParserConfigurationException e2)
{
e2.printStackTrace();
}
try
{
Document workingDocument =
builder.parse("C:\\Users\\Brandon\\Job\\XPath\\XPath_Sample_Stuff\\XPath_Objects.xml");
}
catch (SAXException e1)
{
e1.printStackTrace();
}
catch (IOException e1)
{
e1.printStackTrace();
}
String xPathQuery = "/book/author";
DOMXPath generatedPath;
String results = null;
try
{
generatedPath = new DOMXPath(xPathQuery);
//Here is the errror
results = generatedPath.evaluate(xPathQuery);
}
catch (JaxenException e)
{
e.printStackTrace();
}
if(results == null)
System.err.println("There was an issue processing the xpath, and
results were still null.");
for (int i=0; i<= results.getLength();i++)
{
System.out.println(results.item(i));
}
}
}
这是我收到的 XML 文件中的一些 XML:
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications with XML.</description>
</book>