Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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# XML读取特定属性_C#_Xml_Attributes - Fatal编程技术网

C# XML读取特定属性

C# XML读取特定属性,c#,xml,attributes,C#,Xml,Attributes,我正在尝试创建一个小应用程序,它允许用户编辑xml文件 我得到如下XML文件: <item id="1" name="item_01"> <property name="Meshfile" value="path_to_mesh_file" /> <property name="Material" value="organic" /> <property name="HoldType" value="23" /> &

我正在尝试创建一个小应用程序,它允许用户编辑xml文件

我得到如下XML文件:

<item id="1" name="item_01">
    <property name="Meshfile" value="path_to_mesh_file" />
    <property name="Material" value="organic" />
    <property name="HoldType" value="23" />
    <property name="Stacknumber" value="50" /></property>
</item>
<item id="2" name="item_02">
    <property name="Meshfile" value="path_to_mesh_file" />
    <property name="Material" value="organic" />
    <property name="HoldType" value="23" />
    <property name="Stacknumber" value="50" /></property>
</item>
<item id="3" name="item_03">
    <property name="Meshfile" value="path_to_mesh_file" />
    <property name="Material" value="organic" />
    <property name="HoldType" value="23" />
    <property name="Stacknumber" value="50" /></property>
</item>
<item id="4" name="item_04">
    <property name="Meshfile" value="path_to_mesh_file" />
    <property name="Material" value="organic" />
    <property name="HoldType" value="23" />
    <property name="Stacknumber" value="50" /></property>
</item>


但是我需要在combobox中添加Meshfiles的每个值,但我不知道如何添加。

您发布的xml有额外的标记,必须删除。发布的xml格式不正确,因此我不得不作为片段阅读。请参阅下面的代码

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

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.ConformanceLevel = ConformanceLevel.Fragment;

            XmlReader reader = XmlReader.Create(FILENAME, settings);

            List<string> meshFiles = new List<string>();
            while (!reader.EOF)
            {
                if (reader.Name != "property")
                {
                    reader.ReadToFollowing("property");
                }
                if (!reader.EOF)
                {
                    XElement property = (XElement)XElement.ReadFrom(reader);
                    if ((string)property.Attribute("name") == "Meshfile")
                    {
                        meshFiles.Add((string)property.Attribute("value"));
                    }
                }
            }
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Xml;
使用System.Xml.Linq;
命名空间控制台应用程序1
{
班级计划
{
常量字符串文件名=@“c:\temp\test.xml”;
静态void Main(字符串[]参数)
{
XmlReaderSettings设置=新建XmlReaderSettings();
settings.ConformanceLevel=ConformanceLevel.Fragment;
XmlReader=XmlReader.Create(文件名、设置);
List meshFiles=新列表();
而(!reader.EOF)
{
if(reader.Name!=“属性”)
{
读者。阅读如下(“财产”);
}
if(!reader.EOF)
{
XElement属性=(XElement)XElement.ReadFrom(reader);
if((字符串)property.Attribute(“name”)=“Meshfile”)
{
添加((字符串)property.Attribute(“value”);
}
}
}
}
}
}

应用程序,允许用户编辑xml文件
听起来很吸引人!让我知道如何购买和下载时,它是完整的!我一直想知道如何编辑XML文件…嗯,实际上,我不能删除额外的标记,因为事实上我并不支持创建这些XML,这些XML是由开发游戏的人创建的,我只想把所有的Mesh文件都列在combobox中。。如果我试着在VS2015中使用你的代码,你的代码就不起作用了对不起,它起作用了,这是我的错误,谢谢你的回答,干杯