C # синтаксический анализ XML с и апостроф выдает исключение - PullRequest
3 голосов
/ 18 декабря 2010

Я анализирую XML-файл и сталкиваюсь с проблемой при попытке найти узел, в котором есть апостроф.Когда в имени предмета нет этого, все работает нормально.Я пытался заменить апостроф разными escape-символами, но мне не повезло

string s = "/itemDB/item[@name='" + itemName + "']";

// Things i have tried that did not work
// s.Replace("'", "''");
// .Replace("'", "\'");

XmlNode parent = root.SelectSingleNode(s);

Я всегда получаю XPathException.Как правильно это сделать.Спасибо

Ответы [ 2 ]

4 голосов
/ 18 декабря 2010

Для апостофа замените его на '

1 голос
/ 19 декабря 2010

Вы можете сделать это так:

XmlDocument root = new XmlDocument();

root.LoadXml(@"<itemDB><item name=""abc'def""/></itemDB>");

XmlNode node = root.SelectSingleNode(@"itemDB/item[@name=""abc'def""]");

Обратите внимание на буквальный строковый литерал '@' и двойные кавычки.

Ваш код будет выглядеть так, и в этом нет необходимостизаменить что-либо:

var itemName = @"abc'def";

string s = @"/itemDB/item[@name=""" + itemName + @"""]";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...