C# XML中元素的子节点
我试图编写一个应用程序来读取每一个元素,但是如果元素也有子元素来读取它们,我将给你一个我拥有的XML文件的例子 XML:C# XML中元素的子节点,c#,xml,C#,Xml,我试图编写一个应用程序来读取每一个元素,但是如果元素也有子元素来读取它们,我将给你一个我拥有的XML文件的例子 XML: Пекинез Китай Азия Комунистически щат 1904 Голяма, пропорционално по-широка, отколкото дълбока. Череп: Широк, широк и плосък между очите; не купловиден; широк между ушите. Стоп: Ясно израз
Пекинез
Китай
Азия
Комунистически щат
1904
Голяма, пропорционално по-широка, отколкото дълбока.
Череп: Широк, широк и плосък между очите; не купловиден; широк между ушите.
Стоп: Ясно изразен.
Равни устни, без да се показват зъбите или езика. Здравата долна челюсът е от съществено значение.
Със сърцевидна форма, поставени на нивото на черепа, носени плътно по главата и недостигащи под линията на муцуната. Дълъг пищен украсяващ косъм.
Големи, ясни, кръгли, тъмни и сияещи. Без видими очни проблеми.
Високо поставена, носи се плътно прилепнала, леко извита върху едната от двете страни на гърба. Дълъг украсяващ косъм.
Всички цветове и петна се допустими и еднакво ценени, с изключение на албинизъм или чевенокафяв цвят
Всички цветове и петна се допустими и еднакво ценени, с изключение на албинизъм или чевенокафяв цвят
Всички цветове и петна се допустими и еднакво ценени, с изключение на албинизъм или чевенокафяв цвят
Косъм: Козината е дълга, права, с обилна грива, простираща се извън холката, образуваща пелерина около шията. Груб покривен косъм с дебел, по-мек подкосъм. Украсяващ косъм по ушите, задната страна на крайниците, опашката и пръстите.Дължината и количеството на козината не трябва да помрачават очертанията на тялото.
https://skydrive.live.com/redir?resid=6F26B1E0D6CF648E!291
При тази порода единствено теглото се взима под внимание
5 кг
5.4 кг
正如你所见,我有一些元素,比如country,它们有子元素(country\u name,country\u continent,country\u government\u type),实际信息就在这些子元素中。所以我试图阅读它们中的每一个,但它并没有按照我希望的方式发生。
以下是我的示例代码:
XmlDocument xdoc = new XmlDocument();
xdoc.Load("D:....\\ASP_fifth_xml_file.xml");
XmlNodeList elementsList = xdoc.GetElementsByTagName("country");
for (int i = 0; i < elementsList.Count; i++)
{
foreach (XmlElement element in elementsList[i].ChildNodes)
{
richTextOutput_TextBox.Text += element.Name +":"+ element.InnerText+"\n";
if (element.HasChildNodes)
{
foreach (XmlElement subEl in element.ChildNodes)
{
richTextOutput_TextBox.Text += subEl.Name + ":" + subEl.InnerText + "\n";
}
}
}
richTextOutput_TextBox.Text += "\n \n \n";
}
XmlDocument xdoc=new XmlDocument();
Load(“D:..\\ASP_-fifth_-xml_-file.xml”);
XmlNodeList elementsList=xdoc.GetElementsByTagName(“国家”);
for(int i=0;i
当我尝试运行它时,它在foreach(element.ChildNodes中的xmlementsubel)
所在的行上给出了一个异常。它说:
无法将类型为“System.Xml.XmlText”的对象强制转换为类型为“System.Xml.XmlElement”
将XmlElement更改为XmlNode将解决此问题。 在本例中,由于只有一个元素具有特定的标记名,因此变量elementsList将是一个节点,因为不需要循环
XmlDocument xdoc = new XmlDocument();
xdoc.Load("D:....\\ASP_fifth_xml_file.xml");
XmlNode node = xdoc.SelectSingleNode("//country");
foreach (XmlNode element in node.ChildNodes)
{
richTextOutput_TextBox.Text += element.Name + ":" + element.InnerText + "\n";
if (element.HasChildNodes)
{
foreach (XmlNode subEl in element.ChildNodes)
{
richTextOutput_TextBox.Text += subEl.Name + ":" + subEl.InnerText + "\n";
}
}
richTextOutput_TextBox.Text += "\n \n \n";
}
如果问题仍然存在,请尝试使用隐式类型变量(var)。您的子节点包括文本节点。若要忽略它们,请使用of type()
foreach(element.ChildNodes.OfType()中的XmlNode子元素){…}
尝试用XmlNode替换XmlElement。
XmlDocument xdoc = new XmlDocument();
xdoc.Load("D:....\\ASP_fifth_xml_file.xml");
XmlNode node = xdoc.SelectSingleNode("//country");
foreach (XmlNode element in node.ChildNodes)
{
richTextOutput_TextBox.Text += element.Name + ":" + element.InnerText + "\n";
if (element.HasChildNodes)
{
foreach (XmlNode subEl in element.ChildNodes)
{
richTextOutput_TextBox.Text += subEl.Name + ":" + subEl.InnerText + "\n";
}
}
richTextOutput_TextBox.Text += "\n \n \n";
}
foreach (XmlNode subEl in element.ChildNodes.OfType<XmlElement>()){...}