我有一个xml文件,我需要“&”要打印表单中的复选框名称。但是“&”没有打印。我使用的符号是&
。但在这种情况下,它不会打印出来。我怎么能这样做,有没有其他方式来代表? XML格式如下所述。
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE Strings[<!ELEMENT Strings ANY><!ELEMENT String ANY><!ATTLIST String Name ID #REQUIRED>]> <Strings> <String Name="0">&</String> </Strings>
下面的代码段
public string Load(string _strShortName)
{
StreamReader reader = null;
string l_strShortname = _strShortName;
try
{
xmlCurrentLanguage = new XmlDocument();
//added for the fix and commented
if (File.Exists(strPath + "lang_" + _strShortName + ".xml"))
{
reader = new StreamReader(File.OpenRead(strPath + "lang_" + _strShortName + ".xml"));
}
else
{
//hot fix language change issue.
reader =new StreamReader(File.OpenRead( strPath + "lang_en.xml"));
}
xmlCurrentLanguage.PreserveWhitespace = true;
xmlCurrentLanguage.Load(reader);
reader.Close();
reader.Dispose();
}
catch (Exception e)
{
if (reader != null)
{
reader.Close();
reader.Dispose();
}
MessageBox.Show(e.Message, "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
return l_strShortname;
}
public string GetString(string _id)
{
// Versuche eine zu laden
XmlNode node = null;
if (xmlCurrentLanguage != null)
{
node = xmlCurrentLanguage.GetElementById(_id);
if (node != null)
{
return Parse(node.InnerText);
}
}
return "";
}
private string Parse(string str)
{
string parsedStr;
parsedStr = str.Replace("\n", System.Environment.NewLine);
parsedStr = str.Replace("%n", System.Environment.NewLine);
return parsedStr;
}
public string GetText(string _id, params string[] _cmd)
{
string str = GetString(_id);
string origError = GetString(_id + "_O");
if (origError != "")
{
for (int i = 0; i < _cmd.Length; i++)
{
str = _cmd[i].Replace(origError, str);
}
}
else
{
for (int i = 0; i < _cmd.Length; i++)
{
str.Replace("%" + (i + 1), _cmd[i]);
}
}
return str;
}
在表格中,
public void FillUICaption(ref Language currentLanguage)
{
chkbox.Text = language.TXT_DEFAULT_KET;
}
访问值的代码
public string TXT_DEFAULT_KET{ get { return GetString("1000"); } }
答案 0 :(得分:1)
您可以使用&
来表示xml中的&
符号。几乎每个Xml解析器都会将它读作&
。
更新: 您的xml文件应如下所示:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Strings[<!ELEMENT Strings ANY><!ELEMENT String ANY><!ATTLIST String Name ID #REQUIRED>]>
<Strings>
<String Name="0">&</String>
</Strings>
更新: 找不到该元素的原因是因为您使用此代码来访问该值:
public string TXT_DEFAULT_KET{ get { return GetString("1000"); } }
不存在具有此类字符串ID(即名称)的元素。将其替换为以下内容以获得您想要的效果。
public string TXT_DEFAULT_KET{ get { return GetString("0"); } }
顺便说一下,你实际上不能在Windows窗体复选框中显示&
字符,因为它用于突出显示热键。使用&&
显示它。
答案 1 :(得分:0)
See here 通常xml基于编码=&#34; UTF-8&#34;并且它仅通过使用数字字符表示来支持特殊字符。
这里是Ampersand & or &(which is entity reference)