向XML添加\n的C#流读取器
我使用StreamReader类从Google获取用于地理编码过程的XML向XML添加\n的C#流读取器,c#,xml,streamreader,geocode,C#,Xml,Streamreader,Geocode,我使用StreamReader类从Google获取用于地理编码过程的XML StreamReader srGeoCode = new StreamReader(WebRequest.Create(Url).GetResponse().GetResponseStream()); String GeoCodeXml = srGeoCode.ReadToEnd(); XmlDocument XmlDoc = new XmlDocument(); GeoCode oGeoCode = new GeoCo
StreamReader srGeoCode = new StreamReader(WebRequest.Create(Url).GetResponse().GetResponseStream());
String GeoCodeXml = srGeoCode.ReadToEnd();
XmlDocument XmlDoc = new XmlDocument();
GeoCode oGeoCode = new GeoCode();
XmlDoc.Load(GeoCodeXml);
我得到了XML,但它向XML中添加了\n和其他附加内容
<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<kml xmlns=\"http://earth.google.com/kml/2.0\"><Response>\n <name>
你不仅仅是这样
GeoCodeXml=GeoCodeXml.Replace("\n","");
如果它真的返回此处提到的\n值。y不只是这样做
GeoCodeXml=GeoCodeXml.Replace("\n","");
如果要加载字符串,则需要XmlDoc.LoadXml。从文件加载
顺便说一句,替代方案也更有效。您可以直接从流中加载文档:
WebRequest webRequest = WebRequest.Create(Url);
using (WebResponse webResponse = webRequest.GetResponse())
{
using (Stream responseStream = webResponse.GetResponseStream())
{
XmlDocument XmlDoc = new XmlDocument();
GeoCode oGeoCode = new GeoCode();
XmlDoc.Load(responseStream);
}
}
使用
语句可以确保WebResponse
和Stream
得到清理,即使抛出异常也是如此。如果要加载字符串,需要XmlDoc.LoadXml。从文件加载
顺便说一句,替代方案也更有效。您可以直接从流中加载文档:
WebRequest webRequest = WebRequest.Create(Url);
using (WebResponse webResponse = webRequest.GetResponse())
{
using (Stream responseStream = webResponse.GetResponseStream())
{
XmlDocument XmlDoc = new XmlDocument();
GeoCode oGeoCode = new GeoCode();
XmlDoc.Load(responseStream);
}
}
使用语句可以确保WebResponse
和Stream
得到清理,即使抛出异常也是如此。您也可以发布VB代码吗?Dim wreqGeoCode as WebRequest=WebRequest.Create(strURL)Dim wresGeoCode As WebResponse=wreqGeoCode.GetResponse Dim srGeoCode As New StreamReader(wresGeoCode.GetResponseStream())Dim strXML As String=srGeoCode.ReadToEnd()Dim xmlDoc As New XmlDocument xmlDoc.LoadXml(strXML)这是在我意识到我可以组合WebRequest调用之前。我还尝试了C#方式,没有组合WebRequest。你也可以发布VB代码吗?Dim wreqGeoCode作为WebRequest=WebRequest。Create(strURL)Dim wresGeoCode作为WebResponse=wreqGeoCode.GetResponse Dim srGeoCode作为新的StreamReader(wresGeoCode.GetResponseStream())Dim strXML作为String=srGeoCode.ReadToEnd()将xmlDoc定义为新的XmlDocument xmlDoc.LoadXml(strXML),这是在我意识到可以组合WebRequest调用之前。我也尝试了C#方式,但没有结合WebRequest。我可能可以这样做,只是想看看它为什么这样做。我可能可以这样做,只是想看看它为什么这样做。+1,是的,肯定是这一个,他的VB版本使用LoadXml,它工作正常。他的C#one使用Load,但它不使用。谢谢。我以为我是从VB版复制过来的,但看起来我没有。总是很高兴有第二双眼睛看你的代码。谢谢!我将研究更改代码以提高效率。另一方面,我们的姓氏是一样的——lol+1,是的,肯定是这一个,他的VB版本使用LoadXml,它可以工作。他的C#one使用Load,但它不使用。谢谢。我以为我是从VB版复制过来的,但看起来我没有。总是很高兴有第二双眼睛看你的代码。谢谢!我将研究更改代码以提高效率。顺便说一句,我们的姓是一样的——lol