Возможно, это будет полезно:
function parseJson(code)
{
try {
return JSON.parse(code);
} catch (e) {
return code;
}
}
function parseJsonJQ(code)
{
try {
return $.parseJSON(code);
} catch (e) {
return code;
}
}
var str = "{\"a\":1,\"b\":2,\"c\":3,\"d\":4,\"e\":5}";
alert(typeof parseJson(str));
alert(typeof parseJsonJQ(str));
var str_b = "c";
alert(typeof parseJson(str_b));
alert(typeof parseJsonJQ(str_b));
output:
IE7: строка, объект, строка, строка
CHROME: объект, объект, строка , строка
Если вы хотите использовать пространства имен, LINQ to XML делает это очень простым:
XNamespace ab = "http://whatever-the-url-is";
XElement tempElement = doc.Descendants(ab + "test").FirstOrDefault();
Посмотрите раздел xmlns:ab=...
в вашем документе, чтобы узнать, к какому URI пространства имен относится «ab».
У меня была такая же ошибка. Я обнаружил, что добавляю код ...
var ab = "http://whatever-the-url-is";
... но ab был определен как строка. Это вызвало ошибку, сообщенную OP. Вместо использования ключевого слова VAR я использовал фактический тип данных XNamespace ...
XNamespace ab = "http://whatever-the-url-is";
... и проблема исчезла.
Существует перегрузка метода Get, который вы, возможно, захотите попробовать, который учитывает пространство имен. Попробуйте следующее:
XElement tempElement = doc.Descendants(XName.Get("test", "ab")).FirstOrDefault();
ab
здесь не является фактическим пространством имен - это просто псевдоним для пространства имен. (К сожалению, я не знаю правильной терминологии). LINQ to XML упрощает работу с XNamespace
. Редко вам нужно явно вызвать XName.Get
в LINQ to XML.
– Jon Skeet
4 April 2010 в 20:15
Попробуйте получить пространство имен из документа
var ns = doc.Root.Name.Namespace;
Попробуйте помещать ваше пространство имен в {
... }
следующим образом:
string xfaNamespace = "{http://www.xfa.org/schema/xfa-template/2.6/}";
XNamespace.Xmlns + "ab"
от того, какой элемент объявляет его. – Jon Skeet 4 April 2010 в 23:43