2014-12-17 2 views
2

Я создаю резервные копии всех файлов с компьютера клиента на сервер. После резервного копирования каждого файла я создаю или обновляю запись в XML-файле. Моя проблема заключается в том, что иногда строка, используемая для создания или нахождения узла, содержит недопустимый токен. Строка, используемая для создания или поиска узла, определяется по пути папки и имени файла, который был скопирован.XPathException Недопустимый токен

Пример: при поддержке
Файл вверх: C: \ Users \ Jon_Doe \ Desktop \ report.doc
XML файла:

<root> 
    <Jon_Doe> 
    <Desktop> 
     <Report LastBackup="12/17/2014 11:51:10" /> 
    </Desktop> 
    </Jon_Doe> 
</root> 

Если я встречаю строку, содержащую любой из следующих символов char { ' ' , ',' , '(' , ')' }, я удаляю его из строки. Но я не могу определить, что не так со строкой «64bitPrereq».

Как определить, какая часть строки является «Недопустимый токен» перед использованием этой строки, чтобы найти или создать узел?

ответ

2

Я не могу определить, что не так со строкой «64bitPrereq»

XML не допускает имена элементов, которые начинаются с ASCII цифры. Имена могут содержать цифры, точки и дефисы после первого символа, но должны начинаться с буквы или подчеркивания (точные правила немного сложнее, см. the XML specification, если вам не нравятся нелатинские символы).

Для такого рода задач было бы целесообразнее использовать фиксированное имя элемента и сохранить имя файла или папки в качестве атрибута, вместо того, чтобы пытаться сделать имя папки в самом имени элемента, например.

<root> 
    <Folder name="Jon_Doe"> 
    <Folder name="Desktop"> 
     <File name="Report" LastBackup="12/17/2014 11:51:10" /> 
    </Folder> 
    </Folder> 
</root> 
+0

Прекрасно! Настолько рад, что все было так просто. Огромное спасибо. –

Смежные вопросы