Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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文件的XPath表达式_C#_Asp.net_Xml - Fatal编程技术网

C# 序列化XML文件的XPath表达式

C# 序列化XML文件的XPath表达式,c#,asp.net,xml,C#,Asp.net,Xml,我有一个已序列化为XML的自定义对象 类结构如下所示: public partial class MyWebForm : System.Web.UI.Page { [DataContract, Serializable] public class MyObjectRoot { public MyObjectRoot(List<MyObject> myobjects) { this.Objects = my

我有一个已序列化为XML的自定义对象

类结构如下所示:

public partial class MyWebForm : System.Web.UI.Page
{
    [DataContract, Serializable]
    public class MyObjectRoot
    {
        public MyObjectRoot(List<MyObject> myobjects)
        {
            this.Objects = myobjects;
        }

        [DataMember]
        public List<MyObject> Objects { get; set; }
    }

    [DataContract, Serializable]
    public class MyObject
    {
        public MyObject(string property1, string property2, string property3)
        {
            this.Property1 = property1;
            this.Property2 = property2;
            this.Property3 = property3;
        }

        [DataMember]
        public string Property1 { get; set; }

        [DataMember]
        public string Property2 { get; set; }

        [DataMember]
        public string Property2 { get; set; }
    }
}
`<?xml version="1.0" encoding="utf-8"?>
 <MyWebForm.MyObjectRoot xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MyApplication">
<Objects>
    <MyWebForm.MyObject>
      <Property1>Testing123</Property1>
      <Property2>Testing456</Property2>
      <Property3>Testing789</Property3>
    </MyWebForm.MyObject>
  </Objects>
</MyWebForm.MyObjectRoot >`

下面是一个Xpath语句,它将获取MyWebForm.MyObject的所有子对象的值

MyWebForm.MyObjectRoot/Objects/MyWebForm.MyObject/*/text()

这个xpath
/*[以(name(),'Property')开头]
应该可以工作

使用Linq2Xml:

var xDoc = XDocument.Parse(xmlstring); //or XDocument.Load(xmlfile);
var properties = xDoc.XPathSelectElements("//*[starts-with(name(), 'Property')]")
                     .ToList();

正在尝试获取属性元素的集合或它们的值的集合?我正在使用ListView控件的ItemTemplate中的Xpath。所以要回答你们的问题,它将是一组值
var xDoc = XDocument.Parse(xmlstring); //or XDocument.Load(xmlfile);
var properties = xDoc.XPathSelectElements("//*[starts-with(name(), 'Property')]")
                     .ToList();