2011-03-01 56 views
1

我需要幫助打印出一些XML。這是我的代碼(它沒有工作甚至沒有格式化完整的url權利,它不明白「/ /」在url字符串)它也不懂「<」。必須有更好的方法來做到這一點?在C#中創建簡單的Xml

foreach (string url in theUrls) 
     { 
      [email protected]"http://www.cambit.com/restaurants" +url; 
      xml = xml + @"<url>" + Environment.NewLine + 
         @"<loc>" + fullurl + @"</loc>" + Environment.NewLine + 
         @"<changefreq>weekly</changefreq>" + Environment.NewLine + 
         @"<priority>0.80</priority>" + Environment.NewLine + 
         @"</url>" + Environment.NewLine;  

     } 

它將這些後面的400個相鄰地返回。 Environment.NewLine不工作要麼....

http://www.cambit.com/restaurantsBerwyn 每週0.80

我想這和它說的LOC對象未設置爲一個對象的實例

XmlDocument aNewNode = new XmlDocument(); 
XmlElement urlRoot = aNewNode.CreateElement("url"); 
//aNewNode.DocumentElement.AppendChild(urlRoot); 
XmlElement loc = aNewNode.CreateElement("loc"); 
XmlText locText = aNewNode.CreateTextNode(fullurl); 
aNewNode.DocumentElement.AppendChild(loc); 
aNewNode.DocumentElement.LastChild.AppendChild(locText); 
XmlElement chgFreq = aNewNode.CreateElement("changefreq"); 
XmlText chgFreqText = aNewNode.CreateTextNode("weekly"); 
aNewNode.DocumentElement.AppendChild(chgFreq); 
aNewNode.DocumentElement.LastChild.AppendChild(chgFreqText); 
XmlElement priority = aNewNode.CreateElement("priority"); 
XmlText priorityText = aNewNode.CreateTextNode("0.80"); 
aNewNode.DocumentElement.AppendChild(priority); 
aNewNode.DocumentElement.LastChild.AppendChild(priorityText); 

什麼在做錯?

+0

當你說「打印」你的意思是寫它到打印機,輸出到一個網頁或什麼? – MrKWatkins 2011-03-01 17:57:20

+0

可能的重複http://stackoverflow.com/questions/5042813/how-to-create-this-kind-of-xml – 2011-03-01 17:59:09

回答

4

最簡單的方法之一是使用XDocument,它具有lots of documentation。下面是從文檔的例子:

XDocument srcTree = new XDocument(
    new XComment("This is a comment"), 
    new XElement("Root", 
     new XElement("Child1", "data1"), 
     new XElement("Child2", "data2"), 
     new XElement("Child3", "data3"), 
     new XElement("Child2", "data4"), 
     new XElement("Info5", "info5"), 
     new XElement("Info6", "info6"), 
     new XElement("Info7", "info7"), 
     new XElement("Info8", "info8") 
    ) 
); 

XDocument doc = new XDocument(
    new XComment("This is a comment"), 
    new XElement("Root", 
     from el in srcTree.Element("Root").Elements() 
     where ((string)el).StartsWith("data") 
     select el 
    ) 
); 

Console.WriteLine(doc); 

這會爲你的例子的工作方式是這樣的:

public XDocument CreateDocument(IEnumerable<string> theUrls) 
{ 
    var urlElements = theUrls.Select(u => CreateUrlElement(u)); 
    return new XDocument(new XElement("Urls", urlElements)); 
} 

public XElement CreateUrlElement(string url) 
{ 
    return new XElement("Url", 
     new XElement("loc", fullUrl), 
     ... the rest of your elements ...); 
} 
0

使用XDocument。該網站上有一個很好的例子。

0

你應該使用CDATA部分

http://en.wikipedia.org/wiki/CDATA

+0

你爲什麼這麼想? – 2011-03-01 17:59:57

+0

我認爲url部分可能會破壞xml並將其解釋爲已損壞。 – adt 2011-03-01 18:05:24