为什么我的XML元素总是返回0? [英] Why does my XML element count always return 0?

查看:86
本文介绍了为什么我的XML元素总是返回0?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试计算根中的元素,然后向该根添加一个元素,并根据从头开始的计数为其命名。这是我的XML:



 <   NewDataSet  >  
< Klasse >

< / Klasse >
< Sub >

< / Sub >
< / NewDataSet >





这是我的代码:



  private   void  buttonSchSave_Click( object  sender,EventArgs e)
{

XmlDocument xmldoc = new XmlDocument();
xmldoc.Load( Klassen / NeueKlasse1.xml);
int neuSchV = xmldoc.SelectNodes( 。子)计数;

XDocument doc = XDocument.Load( Klassen / NeueKlasse1.xml );

XElement root = new XElement( SubAdd + neuSchV);
var elementName = doc.Descendants( )?.的SingleOrDefault();
elementName.Add(root);



doc.Save( Klassen / NeueKlasse1.xml );





}





问题是:所有元素SubAdd都被命名为:SubAdd0



Xml元素计数似乎总是返回值0,任何关于如何解决的想法这个?



谢谢。



我的尝试:



搜索类似的问题,没找到我能用的任何东西。

解决方案

你可能不喜欢我想混合 XmlDocument XDocument 。你最终加载了两次相同的文件,如果你的文件变得足够大,这可能会成为一个问题。



计算 Sub 元素,因为 SingleOrDefault 如果有多个,则会抛出异常。你想要计算 Sub 元素的子元素吗?

 XDocument doc = XDocument.Load(Klassen /NeueKlasse1.xml); 
if(doc.Root == null)
{
doc.Add(new XElement(NewDataSet));
}

XElement subNode = doc.Root.Element(Sub);
if(subNode == null)
{
subNode = new XElement(Sub);
doc.Root.Add(subNode);
}

int neuSchV = subNode.Elements()。Count();
XElement subAddNode = new XElement(SubAdd+ neuSchV);
subNode.Add(subAddNode);

doc.Save(Klassen / NeueKlasse1.xml);


 int neuSchV = xmldoc。的SelectNodes( / NewDataSet /子)计数。 



参考选择XML节点按名称[C#] [ ^


I am trying to count out the elements within a root, then add an element to that root and give it a name based on the count from the beginning. Here is my XML:

<NewDataSet>
  <Klasse>
   
  </Klasse>
  <Sub>

  </Sub>
</NewDataSet>



and here is my code:

private void buttonSchSave_Click(object sender, EventArgs e)
 {

     XmlDocument xmldoc = new XmlDocument();
     xmldoc.Load("Klassen/NeueKlasse1.xml");
     int neuSchV = xmldoc.SelectNodes("Sub").Count;

     XDocument doc = XDocument.Load("Klassen/NeueKlasse1.xml");

     XElement root = new XElement("SubAdd" + neuSchV);
     var elementName = doc.Descendants("Sub")?.SingleOrDefault();
     elementName.Add(root);



     doc.Save("Klassen/NeueKlasse1.xml");





 }



The Problem is: all the elements "SubAdd" are named: SubAdd0

The Xml Element Count always seems to return the value 0, any ideas on how to solve this?

Thanks.

What I have tried:

searching for a similar problem, didn't really find anything i could use.

解决方案

You probably don't want to mix XmlDocument and XDocument. You end up loading the same file twice, which could become a problem if your file grows sufficiently large.

There's also no real point in counting the Sub elements, since SingleOrDefault will throw an exception if there is more than one. Did you want to count the child elements of the Sub element instead?

XDocument doc = XDocument.Load("Klassen/NeueKlasse1.xml");
if (doc.Root == null)
{
    doc.Add(new XElement("NewDataSet"));
}

XElement subNode = doc.Root.Element("Sub");
if (subNode == null)
{
    subNode = new XElement("Sub");
    doc.Root.Add(subNode);    
}

int neuSchV = subNode.Elements().Count();
XElement subAddNode = new XElement("SubAdd" + neuSchV);
subNode.Add(subAddNode);

doc.Save("Klassen/NeueKlasse1.xml");


int neuSchV = xmldoc.SelectNodes("/NewDataSet/Sub").Count;


refer Select XML Nodes by Name [C#][^]


这篇关于为什么我的XML元素总是返回0?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆