|
|
|
Доступ к XML-ноде по имени
|
|||
|---|---|---|---|
|
#18+
Hi All, Delphi 10.3.3 Есть XML, который вернул web-сервис: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Мне надо прочитать значения Nod 'faultcode' и 'faultstring' Загружаю этот xml в TXMLDocument Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. При вызове кода обращения, например к ноде 'faultcode', получаю ошибку: Node "faultcode" not found. Если же заменить код обращения к нодам по имени на код по номеру Код: pascal 1. 2. то данные возвращаются без ошибок. Вопрос: Что я делаю не так ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2020, 11:06 |
|
||
|
Доступ к XML-ноде по имени
|
|||
|---|---|---|---|
|
#18+
Надо указать явный namespace. ChildNodes использует FindNode, а тот в свою очередь, если не указан namespace использует DefaultNamespaceURI списка У вас DefaultNamespaceURI это xmlns:SOAP-ENV=" http://schemas.xmlsoap.org/soap/envelope/" из предыдущей ноды Но.. В xml узел faultcode без префикса и метод FindNode считает, что по неймспейсу они не совпадают и не ищет. Поэтому, когда у вас у дочерних элементов не указан неймспейс, надо явно указывать отсутствие неймспейса, если он есть у предка... Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2020, 14:22 |
|
||
|
Доступ к XML-ноде по имени
|
|||
|---|---|---|---|
|
#18+
Stalker4, Проще использовать IXMLDOMDocument - там есть (почти)полноценный XPath ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2020, 14:50 |
|
||
|
Доступ к XML-ноде по имени
|
|||
|---|---|---|---|
|
#18+
X-Cite Поэтому, когда у вас у дочерних элементов не указан неймспейс, надо явно указывать отсутствие неймспейса, если он есть у предка... X-Cite Надо указать явный namespace. zinpub Проще использовать IXMLDOMDocument - там есть (почти)полноценный XPath Может есть какая то статья или примеры по его использованию ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2020, 15:28 |
|
||
|
Доступ к XML-ноде по имени
|
|||
|---|---|---|---|
|
#18+
XPath https://theroadtodelphi.com/category/xpath/ а еще лучше найти OXML который был open source, или его предшественника OmniXML ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2020, 15:45 |
|
||
|
Доступ к XML-ноде по имени
|
|||
|---|---|---|---|
|
#18+
Stalker4 zinpub Проще использовать IXMLDOMDocument - там есть (почти)полноценный XPath Может есть какая то статья или примеры по его использованию ? Книжечка... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2020, 16:06 |
|
||
|
Доступ к XML-ноде по имени
|
|||
|---|---|---|---|
|
#18+
X-Cite Надо указать явный namespace. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2020, 10:14 |
|
||
|
Доступ к XML-ноде по имени
|
|||
|---|---|---|---|
|
#18+
Если в самой xml их не будет - можно. Пространство имен - это же часть xml. <Item> и <xxx:Item> это разные узлы. Правда если задать вот так, я не знаю, будет одно и тоже или нет, по идее одно и тоже.. xmlns="aa" и xmlns:xxx="aa" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2020, 12:10 |
|
||
|
Доступ к XML-ноде по имени
|
|||
|---|---|---|---|
|
#18+
X-Cite Правда если задать вот так, я не знаю, будет одно и тоже или нет, по идее одно и тоже.. xmlns="aa" и xmlns:xxx="aa" Если не указан префикс пространства имен, то используется пространство имен по умолчанию Пространство имен по умолчанию равно значению "атрибута" xmlns (без двоеточия) в текущем элементе или в ближайшем родителе Если "атрибут" xmlns не имеет ни сам элемент ни один из его родителей, то считается, что пространство имен по умолчанию равно пустой строке. Слово "атрибут" взято в кавычки, потому, что декларации xmlns="..", xmlns:xxx="..." не попадают в стандартные коллекции атрибутов элемента ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2020, 18:02 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=53&tid=2038673]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
40ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 346ms |

| 0 / 0 |
