我将xml存储在一个字符串中,如下所示:
String xmlString =
<A>
<B>
<C>C1</C>
<D>D1</D>
</B>
<Separator>S1</Separator>
<B>
<C>C2</C>
<D>D2</D>
</B>
</A>
我想知道c#代码中每个子节点名称的名称。
我的意思是我不会有xml代码,它会随机出现给我,所以我不知道什么是xml结构,我想知道所有子节点名称,如A,B,Cand D这里。
我的意思是我希望从head / Parent(在lmy xml中)开始并在最后(我的意思是在我的xml中)结束并逐个打印所有节点,如A,B,C,D,Separator, then again B ,C,D
。
我试过的是这个:
IEnumerable<XElement> de = from el in xmlstring.Descendants() select el;
foreach (XElement el in de)
{
Debug.WriteLine(el.Name);
}
但它给出了错误:
Error 1 The type 'char' cannot be used as type parameter 'T' in the generic type or method 'System.Xml.Linq.Extensions.Descendants<T>(System.Collections.Generic.IEnumerable<T>)'. There is no boxing conversion from 'char' to 'System.Xml.Linq.XContainer'.
Error 2 Could not find an implementation of the query pattern for source type 'System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>'. 'Select' not found. Are you missing a reference or a using directive for 'System.Linq'?
错误对应于xmlstring.Descendants()
,Visual Studio为红色下划线。
我有以下参考资料:(我认为我已经需要像Linq,xml等参考):
注意:我在Silverlight工作,我必须用c#编写这段代码。
谢谢你们的帮助。
答案 0 :(得分:1)
我无法评论,所以我要在这里写一下:System.Xml.Linq
就是你需要的
XmlDocument.Descendants,而不是System.Linq
。
Get All node name in xml in silverlight
^这就是你要找的东西。 我使用了这段代码,它打印出的节点名称就好了。
string xml = "<A><B><C>C1</C><D>D1</D></B><Separator>S1</Separator><B><C>C2</C><D>D2</D></B></A>";
XDocument doc = XDocument.Parse(xml);
foreach (XElement child in doc.Root.DescendantsAndSelf())
{
Console.WriteLine(child.Name.LocalName);
}