Создайте StructuredQueryDefinition с помощью Marklogic Java API, чтобы найти все XML-файлы с данным элементом.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Создайте StructuredQueryDefinition с помощью Marklogic Java API, чтобы найти все XML-файлы с данным элементом.

Сообщение Anonymous »

Извините, если я пропустил тривиальный ответ на этот вопрос, но я пытаюсь получить объект StructuredQueryDefinition, который будет искать документы, содержащие определенный элемент XML.
Строка поиска XML, которую я мог бы использовать, выглядела бы примерно так:







Но я не уверен, как создать StructuredQueryDefinition с помощью Java API. Я ищу эквивалент , но не вижу его.
StructuredQueryBuilder qb = …
StructuredQueryDefinition def = qb.containerQuery(qb.element("MyTag"), ?whatGoesHere?);

Я нашел уродливый хак, который позволил мне создать свой собственный StructuredQueryDefinition, но он некрасивый. Я надеюсь, что существует более «нестандартный» способ ограничения XML-файлов с заданным тегом, но пока я буду использовать этот класс:
package com.marklogic.client.query;

import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;

/**
* This is a pretty gritty hack. I needed to create a StructuredQueryDefinition that
* would represent the search. (This was needed to find XML files that
* contain a given element).
*
* The StructuredQueryBuilder has a checkQuery method that only allows StructuredQueryDefinition
* objects that are assignable from the AbstractStructuredQuery class. Unfortunatly this
* class is protected so I can't extend it from any class that isn't in the com.marklogic.client.query
* package. Additionally the AbstractStructuredQuery default constructor references the builderOptionsURI
* of its enclosing class StructuredQueryBuilder so I had to first create a class that extended
* the StructuredQueryBuilder and that class define an inner class that extends the AbstractStructuredQuery
* class.
*
* Its not pretty but it does work. I can create a StructuredQueryDefinition to limit to
* document containing a tag using the following
* qb.containerQuery(
* qb.element(tag),
* new com.marklogic.client.query.StructuredQueryBuilderExt().getTrueQueryDefinition()
* );
*/
public class StructuredQueryBuilderExt extends StructuredQueryBuilder {

public TrueQueryDefinition getTrueQueryDefinition() {
return new TrueQueryDefinition();
}

public class TrueQueryDefinition extends AbstractStructuredQuery {

@Override
public void innerSerialize(XMLStreamWriter serializer) throws XMLStreamException {
serializer.writeEmptyElement("true-query");
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... ml-files-w
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»