无法解析javax.xml.xquery.XQException

问题描述 投票:1回答:2

在尝试使用Xquery解析xml时,我得到以下异常,javax.xml.xquery.XQException:处理指令不能以大小写的任意组合命名为“xml”。第1行第1行语法错误{... rsion =“1.0”encoding =“UTF-8 ...} XPST0003:处理指令不能以大小写的任何组合命名为'xml'。下面给出的是XML文件。有人可以建议在这里需要做什么。

<?xml version="1.0" encoding="UTF-8"?>

<bookstore>

<book category="COOKING">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

<book category="CHILDREN">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

</bookstore>
java xml parsing xquery
2个回答
3
投票

我想你在期待一个XQuery文件时已经向XQuery处理器提交了一个XML文件。 XML中的大多数内容在XQuery中也是有效的,但XML声明是一个例外。 (它将被识别为处理指令,但不允许使用名为“xml”的处理指令)。

检查您如何调用XQuery处理器。您正在提供需要查询的XML数据文件。


0
投票

试试这个,

XQueryMain.java(java)

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import javax.xml.xquery.XQConnection;
import javax.xml.xquery.XQDataSource;
import javax.xml.xquery.XQException;
import javax.xml.xquery.XQPreparedExpression;
import javax.xml.xquery.XQResultSequence;
import com.saxonica.xqj.SaxonXQDataSource;

public class XQueryMain {
   public static void main(String[] args){
      try {
          InputStream inputStream = new FileInputStream(new File("condition.xqy"));
          XQDataSource dataSource = new SaxonXQDataSource();
          XQConnection connection = dataSource.getConnection();
          XQPreparedExpression preparedExpression = connection.prepareExpression(inputStream);
          XQResultSequence resultSequence = preparedExpression.executeQuery();

          while (resultSequence.next()) {
             System.out.println(resultSequence.getItemAsString(null));
          }
      }
      catch (FileNotFoundException | XQException e) {
         e.printStackTrace();
      }
   }
}

condition.xqy(XQuery)

for $x in doc("bookstore.xml")/bookstore/book
where $x/price=30
return $x/title

bookstore.hml(CML)

<?xml version="1.0" encoding="UTF-8"?>

<bookstore>

<book category="COOKING">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

<book category="CHILDREN">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

</bookstore>

以下jar文件(SaxonHE9-9-0-2J)添加到类路径

  • 撒克逊人9嘿
  • saxon9-Test.jar的
  • Saksana9-sakajayara
© www.soinside.com 2019 - 2024. All rights reserved.