C# 为什么XMLDocument AppendChild()会添加;";到xml节点字符串值?

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

我有一个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();
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节而不是纯转义文本。