Можно ли сохранить ведущий и запаздывающий пробел в XML?

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

Если это так, он не должен открывать новую вкладку, он просто запускает службу на вашем компьютере, вам нужно перейти к адресу вручную. Это просто не то, что делает весенний ботинок.

9
задан Michael Haren 5 January 2009 в 22:02
поделиться

3 ответа

Поскольку я прокомментировал, все ответы, рекомендующие использование xml:space="preserve" являются неправильными.

xml:space атрибут может только использоваться для управления обработкой узлов только для пробела, которая является текстовыми узлами, состоявшими полностью из пробельных символов.

Это нисколько не имеет место с текущей проблемой.

На самом деле код, предоставленный ниже правильно, получает длину 2 для текстового узла, содержавшегося в:

<xml> 2</xml>

Вот код VB, который правильно добирается, длина текстового узла (не забывайте добавлять ссылку на "Microsoft XML, v 3.0"):

Dim xml As MSXML2.DOMDocument
Private Sub Form_Load()
Set xml = CreateObject("MSXML2.DOMDocument")
xml.async = False
xml.loadxml "<xml> 2</xml>"
Dim n
n = Len(xml.documentelement.selectSingleNode("text()").nodeValue)
wscript.echo Len(n)
End Sub

Если Вы помещаете точку останова на строку:

wscript.echo Len(n)

Вы будете видеть это, когда отладчик повредится там, значение n 2, поскольку это требуется.

Поэтому этот код является решением, которое находилось.

8
ответ дан 4 December 2019 в 14:32
поделиться

Как упомянуто Dimitre Novatchev, для XML, пробел не удален по желанию синтаксическим анализатором. Пробел является частью если значение узла. Так как я не говорю Visual Basic, вот программа C с libxml, который печатает длину первого текстового узла. Нет абсолютно никакой потребности установить xml:space.

% ./whitespace "<foo> </foo>"
Length of " " is 1

% ./whitespace "<foo> 2</foo>"
Length of " 2" is 2

% ./whitespace "<foo>1 2</foo>" 
Length of "1 2" is 3

Вот программа:

#include <stdio.h>
#include <string.h>
#include <libxml/parser.h>

int
main(int argc, char **argv)
{
    char           *xml;
    xmlDoc         *doc;
    xmlNode        *first_child, *node;
    if (argc < 2) {
        fprintf(stderr, "Usage: %s XML-string\n", argv[0]);
        return 1;
    }
    xml = argv[1];
    doc = xmlReadMemory(xml, strlen(xml), "my data", NULL, 0);
    first_child = doc->children;
    first_child = first_child->children;        /* Skip the root */
    for (node = first_child; node; node = node->next) {
        if (node->type == XML_TEXT_NODE) {
            fprintf(stdout, "Length of \"%s\" is %i\n", (char *) node->content,
                    strlen((char *) node->content));
        }
    }
    return 0;
}
3
ответ дан 4 December 2019 в 14:32
поделиться

вы можете попробовать положить его в блок CDATA:

<xml><![CDATA[ 2]]></xml>
3
ответ дан 4 December 2019 в 14:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: