C# 为什么XMLDocument AppendChild()会添加;";到xml节点字符串值?
我有一个URL字符串,要插入到XMLDocument-XmlElement节点: "http://xx.xxx.xxx.xx4:7000/SomeURL/Some/?Locale=asaf&;门户=如何“ 编写此代码时:C# 为什么XMLDocument AppendChild()会添加;";到xml节点字符串值?,c#,.net,xmldocument,ampersand,appendchild,C#,.net,Xmldocument,Ampersand,Appendchild,我有一个URL字符串,要插入到XMLDocument-XmlElement节点: "http://xx.xxx.xxx.xx4:7000/SomeURL/Some/?Locale=asaf&;门户=如何“ 编写此代码时: XmlElement NodeElement = xmlDoc.CreateElement(nodeToCreate); NodeElement.InnerText = propInfo.GetValue(requestData,null).ToString(); additi
XmlElement NodeElement = xmlDoc.CreateElement(nodeToCreate);
NodeElement.InnerText = propInfo.GetValue(requestData,null).ToString();
additionalParamsNode.AppendChild(NodeElement);
“NodeElement.InnerText”中的文本看起来不错,但是当我执行appendChild()时
XMLElement additionalParamsNode中写入了一个“&”。
它类似于XMLElement接受InnerXML,而不是NodeElement的InnerText
我不想将带有“amp”的字符串写入XML,因为链接无法工作
如何在不将“&”更改为“&”?的情况下追加child?如果我没有记错,&是XML中的非法字符之一。这就是为什么它被转换成&(html的&)的原因 您应该能够将数据包装在CDATA标记中
<![CDATA[http://xx.xxx.xxx.xx4:7000/SomeURL/Some/?Locale=asaf&;Portal=how]]>
完成后,您可能必须解析出CDATA标记。这没有帮助,我会这样做:NodeElement.InnerText=“![CDATA[”+propInfo.GetValue(requestData,null).ToString()+“]”;我仍然使用innerXML&而不是&。标记周围必须有开始<和结束>。NodeElement.InnerText=“”;并且可能设置InnerXml属性而不是InnerText,以便成功地添加CDATA节而不是纯转义文本。