This form works in VB .NET
sendMsg = "<CStatus timestamp=""0"" " & _
"type=""login"" " & _
"cid = """ & cID & """ " & _
"key=""" & loginKey & """ />"
但我无法在C#
中使用它sendMsg = "<CStatus timestamp=\"0\"
type=\"login\"
cid=\"" + cID + "\"
key=\"" + loginKey + "\" />";
它不会产生同样的效果
我希望将其作为输出:
<CStatus timestamp="0" type="login" cid="var_cid" key="var_key"/>;
在C#中是否有任何stringXml命令或在字符串中使用双引号的其他方式?
谢谢!
用
解决了 XmlTextWriter
谢谢大家!
答案 0 :(得分:4)
C#中的字符串文字不支持嵌入式换行符。尝试:
sendMsg = "<CStatus timestamp=\"0\" " +
"type=\"login\" " +
"cid=\"" + cID + "\" " +
"key=\"" + loginKey + "\" />";
您的问题似乎与您使用引号无关。
答案 1 :(得分:1)
在C#中使用引号时,您可以使用反斜杠\"
来转义它们,就像您尝试过的那样。
但是,当您将字符串拆分为多行时,请尝试使用@
标记字符串的备用路径,然后将引号加倍以进行正确的转义。
string theString = @"<CStatus timespamp=""0""
type=""login""
/>"; // fill in the rest
答案 2 :(得分:1)
String.Format(@"<CStatus timestamp=""0""
type=""login""
cid=""{0}""
key=""{1}"" />", cID, loginKey);
答案 3 :(得分:1)
有几种方法可以做到这一点。
以目前的方式尝试这样做,它将无法正常工作。您正在尝试将换行符放入常量字符串中。您必须将其重写为:
sendMsg = "<CStatus timestamp=\"0\" " +
"type=\"login\" " +
"cid=\"" + cID + "\" " +
"key=\"" + loginKey + "\" />";
注意每行末尾的额外+'以及每行是如何自己的字符串常量。
我认为在这种情况下使用String.Format可能更容易:
sendMsg = String.Format("<CStatus timestamp=\"0\" type=\"login\" cid=\"{0}\" key=\"{1}\" />",
cID, loginKey);
答案 4 :(得分:1)
另一个选择是使用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();
答案 5 :(得分:0)
报价在c#中被转义为:\"
,例如timestamp="0"
,双引号应为timestamp=\"\"0\"\"
答案 6 :(得分:0)
尝试使用双引号,就像在vb中一样,但是在@
开始你的字符串定义string myString = @"<xml attribute=""my attribute""/>";
您可以查看此链接,查看scape双引号的其他方法:http://weblogs.sqlteam.com/mladenp/archive/2008/10/21/Different-ways-how-to-escape-an-XML-string-in-C.aspx
答案 7 :(得分:0)
sendMsg = "<CStatus timestamp=\"0\" " +
"type=\"login\" " +
"cid=\"" + cID + "\" +
"key=\"" + loginKey + "\" />";
答案 8 :(得分:0)
sendMsg = @"<CStatus timestamp=""0"" type=""login"" cid=""" + cID + """ key=""" + loginKey + """ />";
答案 9 :(得分:0)
正如Greg Hewgill所说,你在c#版本的字符串中有换行符。
你真的应该在这里使用String.Format,但要回答你的问题,你的代码应该是这样的:
sendMsg = "<CStatus timestamp=\"0\" +
"type=\"login\"" +
"cid=\"" + cID + "\"" +
"key=\"" + loginKey + "\" />";
作为String.Format调用,它将是:
sendMsg = String.Format(@"<CStatus timestamp=""{0}""
type=""{1}""
cid=""{2}""
key=""{3}""/>", 0, login, cID, loginKey );