#c# #xml #vb.net
#c# #xml #vb.net
Вопрос:
This form works in VB .NET
sendMsg = "<CStatus timestamp=""0"" " amp; _
"type=""login"" " amp; _
"cid = """ amp; cID amp; """ " amp; _
"key=""" amp; loginKey amp; """ />"
Но я не могу заставить его работать на C#
sendMsg = "<CStatus timestamp="0"
type="login"
cid="" cID ""
key="" loginKey "" />";
это не дает такого же эффекта
Я хочу, чтобы это было выводом:
<CStatus timestamp="0" type="login" cid="var_cid" key="var_key"/>;
есть ли какая-либо команда stringXml в C # или другой способ использования двойных кавычек в строке?
Спасибо!
Решил это с помощью
XmlTextWriter
Спасибо вам всем!
Комментарии:
1. Используйте
String.Format
иVerbatim Strings
.2. Я хочу использовать двойные кавычки в строке
Ответ №1:
Встроенные переводы строк не поддерживаются для строковых литералов в C #. Попробуйте:
sendMsg = "<CStatus timestamp="0" "
"type="login" "
"cid="" cID "" "
"key="" loginKey "" />";
Похоже, ваша проблема не связана с использованием кавычек.
Комментарии:
1. он выдает в качестве выходных данных: <CStatus timestamp=»0″ type=»login» cid=»cid» key=»key » />
2. Что дает в качестве вывода? Вы не показали, как вы пишете строку. Возможно, метод, который вы используете для записи строки, заключается в повторном экранировании кавычек.
3. Я не использую какой-либо метод, я понимаю, что он работает в Vb .net, но не в c #.
4. Возможно, вы смотрите на дисплей отладчика? Возможно, для вас это экранирование кавычек. Попробуйте следующее: выведите длину вашей
sendMsg
строки, а затем посчитайте символы. Посмотрите, содержит ли ваша строка только"
или"
путем подсчета символов.5. @Vural Acar: Я протестировал код Грега, и результат таков:
<CStatus timestamp="0" type="login" cid="1" key="2" />
(заменил переменные cID и LoginKey на 1 и 2). Итак, он работает правильно.
Ответ №2:
Другой вариант — использовать классы XElement и XAttribute, которые будут работать как в VB, так и в C#:
string cID = "blah";
string loginKey = "foo";
var xml = new XElement("CStatus",
new XAttribute("timestamp", "0"),
new XAttribute("type", "login"),
new XAttribute("cid", cID),
new XAttribute("key", loginKey)
);
string sendMsg = xml.ToString();
Ответ №3:
При использовании кавычек в C # вы бы экранировали их обратной косой "
чертой, как вы уже пробовали.
Однако, когда вы разбиваете свою строку на несколько строк, попробуйте альтернативный путь выделения строки, @
а затем удваивайте кавычки для правильного экранирования.
string theString = @"<CStatus timespamp=""0""
type=""login""
/>"; // fill in the rest
Ответ №4:
String.Format(@"<CStatus timestamp=""0""
type=""login""
cid=""{0}""
key=""{1}"" />", cID, loginKey);
Ответ №5:
Есть несколько способов, которыми вы можете это сделать.
В том виде, в котором вы пытаетесь это сделать, это не сработает. Вы пытаетесь поместить новую строку в постоянную строку. Вам придется переписать его как:
sendMsg = "<CStatus timestamp="0" "
"type="login" "
"cid="" cID "" "
"key="" loginKey "" />";
Обратите внимание на дополнительные в конце каждой строки и на то, что каждая строка является собственной строковой константой.
Я думаю, что было бы проще просто использовать String .Формат в этом случае:
sendMsg = String.Format("<CStatus timestamp="0" type="login" cid="{0}" key="{1}" />",
cID, loginKey);
Ответ №6:
В c # кавычки экранируются следующим образом: "
например, timestamp="0"
с двойными кавычками должно быть timestamp=""0""
Ответ №7:
Попробуйте использовать двойные кавычки, как в vb, но начните определение строки с @
string myString = @"<xml attribute=""my attribute""/>";
Вы можете проверить эту ссылку, чтобы увидеть другие способы использования двойных кавычек: http://weblogs.sqlteam.com/mladenp/archive/2008/10/21/Different-ways-how-to-escape-an-XML-string-in-C.aspx
Комментарии:
1. Я все еще читаю статью, я отвечу как можно скорее
Ответ №8:
sendMsg = "<CStatus timestamp="0" "
"type="login" "
"cid="" cID ""
"key="" loginKey "" />";
Ответ №9:
sendMsg = @"<CStatus timestamp=""0"" type=""login"" cid=""" cID """ key=""" loginKey """ />";
Ответ №10:
Как говорит Грег Хьюгилл, у вас есть новые строки в строках в версии c #.
Вы действительно должны использовать String .Формат здесь, но чтобы ответить на ваш вопрос, ваш код должен выглядеть так:
sendMsg = "<CStatus timestamp="0"
"type="login""
"cid="" cID """
"key="" loginKey "" />";
В виде строки.Формат вызова, это было бы:
sendMsg = String.Format(@"<CStatus timestamp=""{0}""
type=""{1}""
cid=""{2}""
key=""{3}""/>", 0, login, cID, loginKey );
Комментарии:
1. Для кавычек в литеральных строках вам нужно использовать два знака кавычек. В противном случае он будет думать, что это конец открытой строки литерала.