将xml节点加载到可以编辑的列表中?

时间:2012-07-19 12:10:01

标签: c# xml

我正在寻找一种方法将数据从我的xml加载到列表,我可以编辑项目,然后将更改加载回xml文件;

<game id="1" name="animals" instruction=" instruction here ">
<words>
  <word wordName="Weasel" categoryCode="1" categoryName="Mammals" />
  <word wordName="Dog" categoryCode="1" categoryName="Mammals" />
  <word wordName="Cat" categoryCode="1" categoryName="Mammals" />
  <word wordName="Snake" categoryCode="2" categoryName="Reptiles" />
  <word wordName="Chameleon" categoryCode="2" categoryName="Reptiles" />
  <word wordName="agama" categoryCode="2" categoryName="Reptiles" />
  <word wordName="Chicken" categoryCode="3" categoryName="Birds" />
  <word wordName="Peacock" categoryCode="3" categoryName="Birds" />
  <word wordName="Pigeon" categoryCode="3" categoryName="Birds" />
</words>`

例如:然后我加载我的页面,将有5个列表,(其中2个将是空的),另外3个将是“哺乳动物”“爬行动物”和“鸟类”。在每个上面的那些将是列出其他列表的所有项目。在哺乳动物下:黄鼠狼,​​狗,猫等。

我正在寻找让我的用户更改所有内容的方法,添加2个节点(用于额外的空列表),更改wordName值,更改categoryName值,添加更多值等等...

有人对如何制作清单有任何建议吗?我可以使用哪个组件?

我在c#和visual studio 2010上编程。

谢谢:)

1 个答案:

答案 0 :(得分:1)

您可以从:

开始
XElement root = XElement.Load(file);

使用根节点,您可以找到带有以下内容的单词:

IEnumerable<XElement> wordList = root.Decendants("word");

然后遍历wordList视图,每个XElement word以获取数据(这里和其他地方有很多例子,只是搜索它)。您可以使用.Add()方法向任何XElement添加更多内容。如果要将其添加到"words"元素,可以使用以下方法搜索:

XElement words = root.Element("words"); // if it is a first rank child or
XElement words = root.XPathSelectElement("//words[word]"); // if it is burried deeper

//words[word]中的XPathSelectElement表示.Descendants("words") that has a child word。要使用XPathSelectElement,您需要将以下内容添加到csharp文件中:

using System.Xml.XPath;

根据您的需要,显然还有其他技巧,方法和手段。祝你好运!