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指令是什么?