私はここでいくつかの XML 解析を学習しようとしています。開始するためのコードがいくつか与えられています。私は使用しているさまざまな API についていくつかの調査を行い、コードを徐々にデバッグして、機能するものにすることができました。XPath クエリを文字列変数に配線して、XML ファイルを解析しようとしています。それがまったく役立つ場合は、 DocumentBuilderFactory も使用しています。とにかく、私はこの例外を受け取り続けます: Java.lang.String cannot be cast to 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>