由于字符的原因,无法从XmlDocument Load-method获得正确的结果

时间:2011-07-13 09:50:07

标签: c# xml encoding xmldocument

编辑:这是通过改变Web服务如何插入GET请求(到UTF-8)来解决的。

我将一个字符串发送到一个向我返回XML的URL。但是如果我发送特殊字符,例如å,ä,ö,则生成的XML不正确。我无法让它发挥作用。

 string name= "abc def åäö";
//name= Uri.EscapeUriString(address); - i also tried this but it messes up the åäö chars in the resulting xml
string uri = "http://blablabla&address=" + name+ "&outputFormat=xml";

System.Xml.XmlDocument x = new System.Xml.XmlDocument();
x.Load(uri);
XmlElement root = x.DocumentElement;
foreach (XmlNode node in root.ChildNodes)
{
     XmlAttribute attr = (XmlAttribute)node.Attributes.GetNamedItem("name");
     System.Windows.Forms.MessageBox.Show(attr.Value);
}

2 个答案:

答案 0 :(得分:1)

我相信你所做的是正确的。您应该最终得到编码为十六进制数字对的字符,每个数字前面都有一个百分比符号,例如å变为%c3%a5。 Web服务器/应用程序服务器应透明地将这些解码回相应的字符。

另请参阅HttpUtility.UrlEncodeUnicode(string),它将使用替代编码,但我不确定这是否会由所有网络服务器处理。

答案 1 :(得分:1)

我不知道这是否有帮助,但请记住attr.Value将逃避Xml类型的转义。但这并不像似乎那样可能是问题所在。而不是检查attr.Value,检查node.OuterXml以查看它是否符合您的期望。