Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用XmlTextReader从外部.xml文件将某些元素中的某些值打印到命令行有困难_C#_.net_Xml_Xmltextreader - Fatal编程技术网

C# 使用XmlTextReader从外部.xml文件将某些元素中的某些值打印到命令行有困难

C# 使用XmlTextReader从外部.xml文件将某些元素中的某些值打印到命令行有困难,c#,.net,xml,xmltextreader,C#,.net,Xml,Xmltextreader,我正在尝试存储和打印至少第一个元素的标记之间的值,但我无法“查找”或“获取”的值 (请更清楚地解释您的情景…) 我计划获取提取的名称值并将其转换(全部小写并在单词之间添加下划线),以便使用它在“images”文件夹中搜索图像文件名 如果找到匹配项-获取图像文件的文件路径,将其存储在变量中,然后在当前元素中创建,并在标记之间粘贴文件路径。对另外999个项目重复该步骤。如果某些项的名称与任何图像文件名不匹配,则创建一个日志文本文件并存储不匹配项的名称 XML结构: <items> &l

我正在尝试存储和打印至少第一个
元素的
标记之间的值,但我无法“查找”或“获取”
的值

(请更清楚地解释您的情景…)

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

如果找到匹配项-获取图像文件的文件路径,将其存储在变量中,然后在当前
元素中创建
,并在标记之间粘贴文件路径。对另外999个项目重复该步骤。如果某些项的名称与任何图像文件名不匹配,则创建一个日志文本文件并存储不匹配项的名称

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

名称1
价格1
说明1
姓名2
价格2
说明2
代码

<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
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Xml;
名称空间myXmlParser
{
班级计划
{
静态void Main(字符串[]参数)
{
XmlTextReader=新的XmlTextReader(“C:\\items\u data.xml”);
while(reader.Read())
{
开关(reader.NodeType)
{
case XmlNodeType.Element://节点是一个元素。
reader.MoveToElement();
Console.WriteLine(reader.Name);
打破
//case XmlNodeType.Text://显示每个元素中的文本。
//Console.WriteLine(reader.Value);
//中断;
//case XmlNodeType.EndElement://显示元素的结尾。
//控制台。写(“”);
//中断;
}
}
Console.ReadKey();
}//主要
}//阶级
}//名称空间
试试看
reader.ReadContentAsString
reader.Name==“Name”

因为您计划以后编辑XML,所以最好使用XmlDocument,并应用前面建议的XPath。

试试看
reader.ReadContentAsString
reader.Name==“Name”


因为您计划以后编辑XML,所以最好使用XmlDocument,并应用前面建议的XPath。

Linq2Xml更易于使用

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


Linq2Xml更易于使用

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


听起来您可以使用XPath>“/items/item/name”找到所有名称。示例:除其他外,您不应该使用
newXMLTextWriter()
。自.NET 2.0以来,它一直被弃用。改用
XmlReader.Create()
。此外,您的阅读器需要位于
using
块中:
using(var reader=XmlReader.Create()){/*code*/}
听起来您可以使用XPath>找到所有名称“/items/item/name”。示例:除其他外,您不应该使用
newXMLTextWriter()
。自.NET 2.0以来,它一直被弃用。改用
XmlReader.Create()
。另外,您的阅读器需要位于
using
块中:
using(var reader=XmlReader.Create()){/*code*/}
它的using指令是什么?它的using指令是什么?