将XML字符串保存为文件时,出现错误的输出XML和特殊字符。 “<”和“>”标签分别替换为<
和>
。为什么WriteAllText方法使用特殊字符保存XML?
XML字符串:
<string xmlns="http://smartpark.com/">
<DocumentElement>
<SpaceInfo>
<R_Numb>490</R_Numb>
<FirstName>Michael</FirstName>
<LastName>Jones</LastName>
<Unit>311</Unit>
<Type>RG</Type>
<Location>FLOOR 1</Location>
<Feature>C</Feature>
<Space>100</Space>
<Status>Assigned</Status>
<DateAssigned>2014-09-24T00:00:00-05:00</DateAssigned>
</SpaceInfo>
</DocumentElement>
</string>
保存方法:
System.IO.File.WriteAllText(Server.MapPath("testing.xml"), urlText,Encoding.UTF8);
对不起这里的家伙是整个代码段:
字符串URL = “http://smartparkllc.com/Service1.asmx/SpaceInfo?space=100”; //存储由webservice返回的XML string urlText =“”;
// call webservice WebRequest request = HttpWebRequest.Create(url); //用得到的Web服务 响应(WebResponse的响应= request.GetResponse()){ 使用 (StreamReader的reader1 =新的StreamReader(response.GetResponseStream())){
urlText = reader1.ReadToEnd();
testweb.Text = urlText;//this is for testing. Can be remove
//create temp xml files from string containing XML returned by webservice
System.IO.File.WriteAllText(Server.MapPath("testing2.xml"), urlText,Encoding.UTF8);
using (XmlReader reader = XmlReader.Create(Server.MapPath("testing2.xml")))
{
SpaceInfo newspaceinfo = new SpaceInfo();
while (reader.Read())
{
//Only detect start elements.
if (reader.IsStartElement())
{
// Get element name and switch on it.
switch (reader.Name)
{
case "R_Numb":
if (reader.Read())
{
//get value
newspaceinfo.R_Numb = Convert.ToInt32(reader.Value.Trim());
}
break;
case "FirstName":
if (reader.Read())
{
newspaceinfo.FirstName = reader.Value.Trim();
}
break;
case "LastName":
if (reader.Read())
{
newspaceinfo.LastName = reader.Value.Trim();
}
break;
case "Unit":
if (reader.Read())
{
newspaceinfo.Unit = reader.Value.Trim();
}
break;
case "Type":
if (reader.Read())
{
newspaceinfo.Type = reader.Value.Trim();
}
break;
case "Location":
if (reader.Read())
{
newspaceinfo.Location = reader.Value.Trim();
}
break;
case "Feature":
if (reader.Read())
{
newspaceinfo.Feature = reader.Value.Trim();
}
break;
case "Status":
if (reader.Read())
{
newspaceinfo.Status = reader.Value.Trim();
}
break;
case "DateAssigned":
if (reader.Read())
{
newspaceinfo.DateAssigned = reader.Value.Trim();
}
break;
}
}
}
XmlDocument.Save()也许?在您的问题原始 - 和替换是相同的... – 2014-11-02 19:02:50
'File.WriteAllText()'不会修改您正在写入文件的文本。所以如果你在用'urlText'表示的XML中获得实体替换,那么在调用'WriteAllText()'之前就发生了这种情况。不幸的是,你还没有提供一个好的代码示例,所以没有办法回答这个问题。请参阅http://stackoverflow.com/help/mcve – 2014-11-02 19:14:36
我从webservice获取XML以上代码 – 2014-11-03 13:06:48