Мне нужно передать символ и внутри элемента XML, но его не нравится, вот пример кода:
XmlDocument doc = new XmlDocument();
XmlElement batch = doc.CreateElement("Batch");
string item = "<field>http://mylink.com/page.aspx?id=1&disp=2</field>"
batch.InnerXml = item;
Его абсолютно важно, чтобы я включил эту ссылку внутри, так кто-нибудь знает, как обойти это?
Спасибо
Побег: &
.
string item = "<field>http://mylink.com/page.aspx?id=1&disp=2</field>";
Вам нужно избежать этого как &
.
Как говорят люди, побег элемента будет работать. Однако я считаю это немного чище:
XmlDocument doc = new XmlDocument();
XmlElement batch = doc.CreateElement("Batch");
XmlElement field = doc.CreateElement("field");
string link = "http://mylink.com/page.aspx?id=1&disp=2"
field.InnerText = link;
batch.AppendChild(field);
вы можете использовать &
Как указывали другие, вы можете просто использовать escape-последовательность &
. Однако более элегантный подход заключается не в том, чтобы напрямую обращаться к XML.
var doc = new XmlDocument();
var batch = doc.CreateElement("Batch");
var field = doc.CreateElement("field");
field.InnerText = "http://mylink.com/page.aspx?id=1&disp=2"
batch.Children.AppendChild(field);
Не нужно беспокоиться о том, чтобы избежать чего-либо, таким образом.:)
Используйте .InnerText, а не .InnerXml, и экземпляр XmlDocument выполнит все необходимые кодировки для вас, например, автоматически выйдет из режима &
.InnerXml используется, когда у вас уже есть строка xml, которая не должна быть экранирована, что здесь не так.
Если вы создадите элемент с помощью методов Xml, он отлично обернет все для вас. Поэтому снова используйте метод CreateElement
и установите свойство InnerText
элемента в вашу ссылку.
XmlDocument doc = new XmlDocument();
XmlElement batch = doc.CreateElement("Batch");
string item = "<field>http://mylink.com/page.aspx?id=1&disp=2</field>"
batch.InnerXml = item;