2017-06-11 132 views
0

我正嘗試以下元素添加到.XML在C#:添加元素XML C#

<Launch.Addon> 
     <Name>IvAp</Name> 
     <Disabled>False</Disabled> 
     <Path>C:\Program Files (x86)</Path> 
     <Commandline></Commandline> 
</Launch.Addon> 

用下面的代碼:

XDocument xd1 = new XDocument(); 
xd1 = XDocument.Load(pathToAData + "\\dll.xml"); 

XElement root = new XElement("Launch Addon"); 
root.Add(new XElement("Name", "IvAp")); 
root.Add(new XElement("Disable", "False")); 
root.Add(new XElement("Path", "C:\\Program Files (x86)\\IVAO\\IvAp v2\\ivap_fsx_bootstrap.dll")); 
root.Add(new XElement("Commandline")); 
xd1.Element("Launch Addon").Add(root); 
xd1.Save(pathToAData + "\\dll.xml"); 

但它拋出嘗試錯誤{}趕上{}塊,I'll非常感激,如果你能幫助我

這是錯誤:

.System.Xml.XmlException: El carácter ' ', con valor hexadecimal 0x20, no puede incluirse en un nombre. 
+0

爲什麼你不想告訴我們拋出了什麼異常? – apocalypse

+0

如果你能告訴我這個錯誤,我將非常感激。 – CodingYoshi

+0

什麼錯誤從try catch? –

回答

1

您幾乎在那裏。首先,正如我在我的評論中提到的那樣,您需要從Launch Addon中刪除空格,因爲XML元素名稱不能有空格。

接下來,想象這是你的XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<test> 
    <addons> 
    </addons> 
</test> 

現在要添加一些內容。您需要指定要添加新元素的元素。所以,如果你想將元素添加到<test>,那麼你需要做的是:

XElement root = new XElement("LaunchAddon"); 
root.Add(new XElement("Name", "IvAp")); 
root.Add(new XElement("Disable", "False")); 
root.Add(new XElement("Path", "C:\\Program Files (x86)\\IVAO\\IvAp v2\\ivap_fsx_bootstrap.dll")); 
root.Add(new XElement("Commandline")); 

xd1.Element("test").Add(root); //<-- See this, we are adding to test 

如果我們想要增加<addons>,那麼我們這樣做:

xd1.Descendants("addons").First().Add(root); 

或者你可以使用XPath找到您要添加新節點的節點。

7

你雖然沒有給我們的錯誤,我認爲這裏

new XElement("Launch Addon"); 

空白導致錯誤。因爲據我所知,標籤名稱內的空格是不允許的。但請查看規格以瞭解更多信息:https://www.w3.org/TR/REC-xml/#NT-NameChar

+1

另外我很確定這是一個錯誤以及xd1.Element(「Launch Addon」)。 ); –