0

我正在尝试存储和打印<name></name>至少第一个<item></item>元素的标签之间的值,但我无法“找到”或“获取”的值<name></name>

请更清楚地解释您的情况......

我计划获取提取的name值并将其转换(全部小写并为单词之间的空格添加下划线),以便我可以使用它在“images”文件夹中搜索图像文件名。

如果找到匹配项 - 获取图像文件的文件路径,将其存储在变量中,然后<image></image>在当前<item></item>元素中创建并粘贴标签之间的文件路径。对另外 999 个项目重复此操作。如果某些项目name与任何图像文件名不匹配 - 然后创建一个日志文本文件并存储未匹配的项目的名称。

XML结构

<items>
 <item>
  <name>Name1</name>
  <price>Price1</price>
  <description>Description1</description>
 </item>
 <item>
  <name>Name2</name>
  <price>Price2</price>
  <description>Description2</description>
 </item>
</items>

代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;


    namespace myXmlParser
    {
        class Program
        {
            static void Main(string[] args)
            {
                XmlTextReader reader = new XmlTextReader("C:\\items_data.xml");
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                        case XmlNodeType.Element: // The node is an element.
                            reader.MoveToElement();
                            Console.WriteLine(reader.Name);
                            break;
                        //case XmlNodeType.Text: //Display the text in each element.
                        //    Console.WriteLine(reader.Value);
                        //    break;
                        //case XmlNodeType.EndElement: //Display the end of the element.
                        //    Console.Write("</" + reader.Name);
                        //    Console.WriteLine(">");
                        //    break;
                    }

                }
                Console.ReadKey();

            }// main
        }// class
    }// namespace
4

2 回答 2

2

Linq2Xml 更容易使用

XDocument xDoc = XDocument.Load("C:\\items_data.xml");
var names = xDoc.Descendants("name")
    .Select(x => x.Value)
    .ToArray();

-

 xDoc.Descendants("name")
    .Where(x => x.Value == "Name1")
    .First()
    .Parent.Add(new XElement("image", "path of the image"));
于 2012-08-07T19:18:31.450 回答
1

reader.ReadContentAsString什么时候试试 reader.Name == "name"
由于您计划稍后编辑 XML,您不妨使用 XmlDocument,并应用您之前建议的 XPath。

于 2012-08-07T19:18:24.103 回答