Работа с xml-файлами

NickProstoNick

Статус как статус :)
Green Team
22.08.2008
1 851
27
Всем привет!
Не особо владею java, но интересует такой вопрос - есть ли методы/классы для работы с xml-файлами средствами SQL-запросов?
Загрузку в БД не предлагать.
 
именно sql?
xquery или xpath совсем не устраивают?
 
@Kmet, приветствуем бродяг, вернувшихся к очагу :)
 
поднимайте раздел, он вас ждал ;)
видите какой форум новёхонький, даже репутацию порезали (не всем но и мне и вам досталось, но мы наверстаем), глючноватый местами
правда у всех пыл поостыл, я еще пока трепыхаюсь ... ну да ничего
 
link removed или link removed первый наверное вам подойдёт больше.
 
поднимайте раздел, он вас ждал ;)
видите какой форум новёхонький, даже репутацию порезали (не всем но и мне и вам досталось, но мы наверстаем), глючноватый местами
правда у всех пыл поостыл, я еще пока трепыхаюсь ... ну да ничего

движок, да, классно обновили :bravo:
но за продвижением и развитием это все же не ко мне, я же программист, я могу только клац клац и в продакшен :fyeah:
но поделиться каким никаким опытом всегда готов.

1к сообщение, хм
 
Подскажите набор библиотек?
Какие и где взять?
 
И еще вопрос - возможно ли менять значения в разных нодах по разным условиям?
Что-то вроде кейса. Очень надо. Помогите
 
все же стесняюсь спросить - где скачать найти библиотеку? Облазил много, а не нашел. Только примеры :(
 
конкретную реализацию рекомендовать не буду, использовал давно, в каком состоянии они сейчас не знаю

варианты
1) Oracle XML Developer's Kit , вроде как имеет приемлемуюю лицензию, но как и все оракловае так просто не скачать, надо регаться, разбираться и т.д.

2) Saxon HE . http://www.saxonica.com/download/opensource.xml или как белые люди с мавен репозитория http://mvnrepository.com/artifact/net.sf.saxon/Saxon-HE/9.6.0-5
У этих еще есть платные редакции, на которые можно выклянчить 30 триал, но бесплатная версия выглядит достаточно фичастой

и тд.
 
я не совсем правильно описал вопрос с case.
Пробовал разбираться. Вот такая конструкция меняет все теги value где атрибут NAME родителя равен "TEST"
Java:
for $x in doc("file.xml")/root/card
where $x/row[@NAME="r1"]/VALUE="TEST"
return replace value of node $x/row[@NAME="r1"]/value with "1111"
Так вот задача.... мне надо указывать разные value для разных NAME и вернуть это одним результатом
 
не очень понимаю в чем проблема
xquery поддерживает функции link removed

убрать фильтра из where и подставлять value из функции от NAME
 
Подскажите набор библиотек?
Какие и где взять?
Я в Lotus Notes использую всё штатное, всё это есть в лотусовой JVM
Java:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
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.Document;
import org.w3c.dom.NodeList;
Маленький пример (xmlText - это String с разбираемым XML текстом):
Java:
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true); // never forget this!
DocumentBuilder builder = domFactory.newDocumentBuilder();
InputStream source = new ByteArrayInputStream(xmlText.getBytes("UTF-8"));
Document doc = builder.parse(source);
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
String xpathQuery = "//error/text()";
String errorText = xpath.evaluate(xpathQuery, doc);
if (errorText.equals("")) {
   ...
}
[code]
 
мм... есть xml-файл
HTML:
<root><card>
<block>
<block>
	<row name="r1">param1</row>
	<row name="r2"></row>
	<row name="a3"></row>
</block>
<block>
	<row name="r1">param2</row>
	<row name="r2"></row>
	<row name="a3"></row>
</block>
<block>
	<row name="r1">param3</row>
	<row name="r2"></row>
	<row name="a3"></row>
</block>
</root></card>
У всех блоков в теге с именем r1 содержатся разные значения.
Задача - во всех блоках в теге с именем r3 заполнить свое значение.
Для каждого значения r1 есть свое значение r3.
Таких соответствий положим 100.

Результатом должен быть набор всех этих измененных блоков (допускается, что блоков может быть меньше исходного количества)
HTML:
<root><card>
<block>
	<row name="r1">param1</row>
	<row name="r2"></row>
	<row name="a3">val1</row>
</block>
<block>
	<row name="r1">param2</row>
	<row name="r2"></row>
	<row name="a3">val2</row>
</block>
<block>
	<row name="r1">param3</row>
	<row name="r2"></row>
	<row name="a3">val3</row>
</block>
</root></card>
 
Последнее редактирование модератором:
Может быть XLST? Если все возможные соответствия r1/r3 заранее известны и их можно описать в шаблоне, я бы наверное сделал так.
 
Может быть XLST? Если все возможные соответствия r1/r3 заранее известны и их можно описать в шаблоне, я бы наверное сделал так.
пробовал... но есть нюансы:
это должен быть софт, простой для использования, а не простыни xslt.
Это я к пример у написал соответствие двух строк. В действительности может быть отношение один ко многим.
Блоков может быть 50-60 тысяч.
Я понимаю, что эта задача для БД, но пока не получается ее спихнуть... вот и выкручиваюсь :(
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab