Я пытаюсь получить массив атрибутов, и я разбиваю на символ пробела. То, что я прекрасно работаю, за исключением случаев, когда задействованы пространства имен. Вот мой пример кода:Как получить массив атрибутов, когда между именем и значением есть пробельные символы?
XML:
<?xml version="1.0" encoding="utf-8"?>
<s:node something xmlns:s = "library://ns.adobe.com/flex/spark"
xmlns:b='testnamespace.com' xmlns="noprefix.com"></node>
Exmascript:
var xmlString:String = 'something xmlns:s = "library://ns.adobe.com/flex/spark" xmlns:b='testnamespace.com' xmlns="noprefix.com"';
var attributes:Array = xmlString.split(/\s+/g);
Это приводит этот массив элементов:
- something
- xmlns:s
- =
- "library://ns.adobe.com/flex/spark"
- xmlns:b='testnamespace.com'
- xmlns="noprefix.com"
Как бы я разделил атрибуты вверх когда между именем и значением есть пробелы?
PS:
У меня есть синтаксический анализатор XML, но он выдает ошибку из-за несоответствующих пространств имен. Поэтому мне приходится разбирать атрибуты и удалять или исправлять недопустимые пространства имен, а затем я могу передать им строку XML.
PSS:
Мне нужно только работать с первым тегом, чтобы добавить пространства имен. Я не делаю никаких других строковых манипуляций.
Используйте XML-парсер вместо этого. Регулярные выражения JavaScript недостаточно эффективны для правильного анализа XML. – Ryan
У меня есть синтаксический анализатор XML, но он вызывает ошибку из-за несоответствующих пространств имен. Поэтому я должен разбирать атрибуты и удалять или исправлять недопустимые пространства имен. PS Мне нужно только работать с первым тегом, чтобы добавить пространства имен. Я не делаю никаких других строковых манипуляций. –
Я думаю, что вместо использования регулярного выражения вам лучше использовать замену '.replace ('=', '='). Replace ('=', '=')' перед разбиением –