У меня есть часть проверки бизнеса, которая должна произойти во время преобразования. Это связано с тем, что некоторая информация доступна только в то время.Как создать анализ xml-предков
Итак, я начал создавать XPath, который дал мне все узлы, которые мне нужны для анализа, который я достиг. Что-то вроде строк .//*[@attributeIdentifyingMyNodes]
То, с чем я борюсь, - это как перенести родовое дерево. Я знаю, что могу как-то погулять родителям; но меня беспокоит эффективность этого, так как это может происходить сотни раз за трансформацию.
Мне также нужно пройти всю родительскую ось узла и определить, и каждый узел, если что-то истинно, и если оно когда-либо ложно, то устраните эту ось. Я определить логическое значение, основанное на функции (и для практических целей необходимо вызвать эту функцию для оценки истинного или ложного)
- Но фокус в том, у меня есть только ошибка, если каждый узел, идентифицированная в результате моего XPATH, в имеет родительскую ось, которая приводит к ложной оценке.
Я не против того, чтобы совершенно разных подходов, как оценка всех этих узлов, которые возвращают истинные в новое дерево переменной функции
trueFalseEvaluation заменяющего атрибут для иллюстративных целей
<?xml version="1.0" encoding="UTF-8"?>
<root trueFalseEvaluation="true">
<someNode trueFalseEvaluation="true">
<someOtherNode trueFalseEvaluation="false">
<myNodeIdentified1 identifyingAttribute="true"/>
</someOtherNode>
</someNode>
<someNode trueFalseEvaluation="false">
<someOtherNode trueFalseEvaluation="false">
<myNodeIdentified2 identifyingAttribute="true"/>
</someOtherNode>
</someNode>
<someNode trueFalseEvaluation="true">
<someOtherNode trueFalseEvaluation="true">
<myNodeIdentified3 identifyingAttribute="true"/>
</someOtherNode>
</someNode>
<someNode trueFalseEvaluation="true">
<someOtherNode trueFalseEvaluation="true">
<myNodeIdentified4 notIdentifying="true"/>
</someOtherNode>
</someNode>
</root>
Что я хочу от этого, это вернуть true, потому что myNodeIdentified3
имеет полную ось предка, которая оценивает значение true на каждом узле. Однако, если какой-либо из myNodeIdentified3's
родителей был ложным, мой весь тест не удался.
И, наконец, мне нужно объединить это в нескольких документах XML (несколько наборов корня)
Спасибо за любую помощь здесь. Я действительно обеспокоен тем, что любое решение, которое я создаю, наполнит мой объем памяти или кратер производительности моего преобразования.
Я мог понять только то, что вы хотите сделать. Но я серьезно думаю, что вы будете более конкретным из того, чего хотите достичь, разместив образец вывода и затем объяснив его, чтобы кто-то предложил какое-либо решение. –
Ну, я действительно не хочу вывода. Я хочу проанализировать XML в процессе преобразования, чтобы он соответствовал нашим бизнес-правилам. Есть ли определенная деталь, которая нечеткая? – TheNorthWes
Не получилось бы получить преобразованный вывод с некоторыми значениями, отображающими правильность XML в отношении ваших бизнес-правил? –