XPath вернет объект, отличный от String - PullRequest
1 голос
/ 03 февраля 2011

У меня есть карта xml, как показано ниже. Я могу получить значение, используя XPath, но могу ли я получить объект вместо этого? Например, я хочу, чтобы объект Map был восстановлен, если я скажу / list / *. Можно ли извлечь как объект.

<list>
    <map>
        <val name="obj_type">USER</val>
        <val name="ret_name">user</val>
        <list name="attributes">
            <map>
                <val name="obj_type">USER_ID</val>
                <val name="ret_name">userID</val>
            </map>
            <map>
                <val name="obj_type">
                    USER_UsernamePasswordCredential
                </val>
                <list name="attributes">
                    <map>
                        <val name="obj_type">UNP_Username</val>
                        <val name="ret_name">UserName</val>
                    </map>
                    <map>
                        <val name="obj_type">UNP_Password</val>
                        <val name="ret_name">Password</val>
                    </map>
                </list>
            </map>
        </list>
    </map>
</list>

Ответы [ 3 ]

1 голос
/ 04 февраля 2011

С http://www.w3.org/TR/xpath/#section-Introduction

Выражение вычисляется для получения объекта, который имеет один из следующих четырех основных типов:

  • набор узлов (неупорядоченныйнабор узлов без дубликатов)
  • логическое (истина или ложь)
  • число (число с плавающей запятой)
  • строка (последовательность символов UCS)

Эти четыре основных типа (а также другие, касающиеся обновления, порядка и полноты) отображаются стандартным DOM XPath API.С http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathResult

Группа определений XPathResultType

Целое число, указывающее, к какому типу результата это относится.Если значение указано, то результат будет возвращен как соответствующий тип, используя преобразования типов XPath , где это необходимо и возможно.

Определенные константы

  • BOOLEAN_TYPE
    Результатом является логическое значение, определенное в [XPath 1.0].Изменение документа не делает недействительным логическое значение, но может означать, что переоценка не приведет к тому же логическому значению.
  • NUMBER_TYPE
    Результатом является число, определенное [XPath 1.0].Изменение документа не делает недействительным число, но может означать, что переоценка не даст того же числа.
  • STRING_TYPE
    Результатом является строка, как определено в [XPath 1.0].Изменение документа не делает строку недействительной, но может означать, что строка больше не соответствует текущему документу.
  • UNORDERED_NODE_SNAPSHOT_TYPE
    В результате получается узел, определенный в соответствии с [XPath 1.0], который будетдоступ как список снимков узлов, которые могут быть не в определенном порядке.Изменение документа не делает снимок недействительным, но может означать, что переоценка не приведет к тому же снимку, и узлы в снимке могут быть изменены, перемещены или удалены из документа.
0 голосов
/ 03 февраля 2011

XPATH работает только на уровне DOM и возвращает узлы вместо реальных объектов.

Если вы хотите работать с реальными типами данных, вы можете использовать некоторые существующие фреймворки, такие как castor fo java, а для dotnet вы можете увидеть эту статью .

0 голосов
/ 03 февраля 2011

Это только объект, если вы связываете данные с экземпляром объекта. Может быть, вы имеете в виду элемент XML? В любом случае это зависит от вашего языка программирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...