Ich habe eine XML-Datei, die eine Reihe von Kanälen hat, und ich möchte eine Kanalkategorie an jede einzelne von ihnen anhängen. Abhängig davon, welcher Kanal es ist. Ich bin sehr neu, also entschuldigen Sie bitte, wenn das ein offensichtlicher Fehler ist.C# Hinzufügen von XML-Element, wo Attribut gleich
Beispiel:
<channel-category>Entertainment</channel-category>
oder
<channel-category>News</channel-category>
Ich habe versucht, die folgenden:
string path;
string xmlfile = "/channels.xml";
path = Environment.CurrentDirectory + xmlfile;
if (exists("channelname1"))
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode root = doc.DocumentElement;
XmlNode node = root.SelectSingleNode("list/channel[@id='channelname1'");
XmlNode category = doc.CreateElement("channel-category");
category.InnerText = "channelcataegorygoeshere";
node.AppendChild(category);
doc.DocumentElement.AppendChild(node);
}
else
{
Console.WriteLine("not found");
}
Console.ReadKey();
}
static bool exists(string channelname)
{
string path;
string xmlfile = "/channels.xml";
path = Environment.CurrentDirectory + xmlfile;
XDocument xmlDoc = XDocument.Load(path);
bool doesexists = (from data in xmlDoc.Element("list").Elements("channel")
where (string)data.Attribute("id") == channelname
select data).Any();
return doesexists;
}
aber es gibt mir die folgende Fehlermeldung und ich kann es nicht herausgefunden. . Was mache ich falsch?
An unhandled exception of type 'System.Xml.XPath.XPathException' occurred in System.Xml.dll
Additional information: 'list/channel[@id='channelname1'' has an invalid token.
von dieser Linie
XmlNode node = root.SelectSingleNode("list/channel[@id='channelname1'");
Meine XML-ähnliche
<?xml version="1.0" encoding="UTF-8"?>
<list info="list">
<channel id="channelname1">
<display-name lang="en">channelname1</display-name>
<icon src="http://locationtologo.com/" />
<url>http://someurl.com</url>
</channel>
<channel id="channelname2">
<display-name lang="en">channelname2</display-name>
<icon src="http://locationtologo.com/" />
<url>http://someurl.com</url>
</channel>
<channel id="channelname3">
<display-name lang="en">channelname3</display-name>
<icon src="http://locationtologo.com/" />
<url>http://someurl.com</url>
</channel>
<channel id="channelname4">
<display-name lang="en">channelname4</display-name>
<icon src="http://locationtologo.com/" />
<url>http://someurl.com</url>
</channel>
</list>
'von Daten in xmlDoc.Element ("tv")' - Ihre xml haben nicht 'tv' Element. –
Entschuldigung, ich habe den falschen Fehler eingefügt. 'Eine nicht behandelte Ausnahme des Typs 'System.Xml.XPath.XPathException' aufgetreten in System.Xml.dll Zusätzliche Informationen: Liste/Kanal [@ id = 'channelname1 '' hat eine ungültige token.' aus Diese Zeile: 'XmlNode Knoten = root.SelectSingleNode (" list/channel [@ id = 'Kanalname1' ");' Ich habe meinen Beitrag bearbeitet. –