如何在C#</xml>中删除<xml version =“1.0”>元素

时间:2014-08-07 10:31:49

标签: c# .net xml xml-parsing

我的变量中的xml内容如下:

 var xml = DownloadString(@"http://192.168.1.50:8983/solr/core-live/select?q=*%3A*&wt=xslt&tr=custom.xsl");

DownloadString是一个函数/方法

public static string DownloadString(string address) 
     {
        string text;
         using (var client = new WebClient()) 
         {
           text = client.DownloadString(address);
         }
           return text;
      }

当我在xml变量上调试时,xml o / p看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<xml version="1.0">
<item>
<sku>12944</sku>
<title>test</title</item>
</xml>

我想从同一个变量中删除第二个节点(<xml version="1.0">)和最后一个节点(</xml>)。

然后使用以下内容在xml文件中保存内容:

 System.IO.File.WriteAllText("test.xml", xml);

的问候, Jatin

5 个答案:

答案 0 :(得分:3)

XDocument xdoc = XDocument.Parse(xml);
xdoc.Declaration = null;
return xdoc;

C# creating XML output file without <?xml version="1.0" encoding="utf-8"?>

答案 1 :(得分:1)

也许你需要在字符串

中使用replace方法
                text = text.Replace("<xml version=\"1.0\">", "");
                text = text.Replace("</xml>", "");

答案 2 :(得分:0)

    string filePath = "C:\\file.xml";
                List<string> strList = File.ReadAllLines(filePath).ToList();
                StringBuilder sb = new StringBuilder();
                int ctr = 0;
                foreach (string str in strList)
                {
                    ctr++;
                    if (ctr == 1 || ctr == strList.Count)
                        continue;
                    sb.Append(str);
                }

答案 3 :(得分:0)

在我的情况下,除了@ user1040975的问题解决方案之外,我还必须将XmlWriterSettings的OmitXmlDeclaration属性设置为true,这样,将出现没有我创建的Encoding的新声明,最后代码如下所示:

XmlWriterSettings settings = new XmlWriterSettings()
{
    Encoding = new UTF8Encoding(false),
    OmitXmlDeclaration = true
};
using (XmlWriter xmlWriter = XmlWriter.Create(convertedPath, settings))
{
    XDocument xDoc = XDocument.Parse(innerXml);
    xDoc.Declaration = new XDeclaration("1.0",null,null);
    xDoc.Save(xmlWriter);
}

答案 4 :(得分:-2)

我在DownloadString()mathod上使用了string replace()函数。

我试过这段代码并且工作正常。

public static string DownloadString(string address) 
        {
                    string text;
                    using (var client = new WebClient()) 
                    {
                        text = client.DownloadString(address);
                    }
                    return text.Replace("<xml version=\"1.0\">", "").Replace("</xml>", "");
        }