Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.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#_Linq To Xml - Fatal编程技术网

C# 从具有命名空间的XML加载对象

C# 从具有命名空间的XML加载对象,c#,linq-to-xml,C#,Linq To Xml,我环顾四周,没有能够为我所需要的实施解决方案。如果这看起来像是重复的问题,我道歉 我正在查询一个IDOL服务,需要从xml响应加载一个对象 给出示例xml: <autnresponse xslns:autn="http://schemas.autonomy.com/aci/"> <action>QUERY</action> <response>SUCCESS</response> <responsedata>

我环顾四周,没有能够为我所需要的实施解决方案。如果这看起来像是重复的问题,我道歉

我正在查询一个IDOL服务,需要从xml响应加载一个对象

给出示例xml:

<autnresponse xslns:autn="http://schemas.autonomy.com/aci/">
  <action>QUERY</action>
  <response>SUCCESS</response>
  <responsedata>
    <autn:numhits>2</autn:numhits>
    <autn:totalhits>2</autn:totalhits>
    <autn:totaldbdocs>2</autn:totaldbdocs>
    <autn:totaldbsecs>2</autn:totaldbsecs>
    <autn:hit>
      <autn:reference>http://blah</autn:reference>
      <autn:title>my title</autn:title>
    </autn:hit>
    <autn:hit>
      <autn:reference>http://blah</autn:reference>
      <autn:title>my title</autn:title>
    </autn:hit>        
  </responsedata>
</autnresponse>
。。。加载Xelemet

IEnumerable<XElement> urls = raw.Elements(IDOLModule.GetNamespace()+ "hit");
            foreach (var single in urls)
            {
                var t = new url();
                t.Title="";
                t.Url="";
                listURL.Add(t);
            }
IEnumerable URL=raw.Elements(IDOLModule.GetNamespace()+“hit”);
foreach(URL中的单个变量)
{
var t=新url();
t、 Title=“”;
t、 Url=“”;
添加(t);
}
URL变量总是返回为空。我只需要将autn:hits节点作为目标,并将其数据加载到对象

干杯,

你可以试试这样的东西:

XElement doc=XElement.Parse(@)
查询
成功
2.
2.
2.
2.
http://blah
我的头衔
http://blah
我的头衔
");
XNS=(“http://schemas.autonomy.com/aci/");
//Console.WriteLine(doc.subjects(ns+“numhits”).First().Value);
IEnumerable hits=文档子体(ns+“hit”);
foreach(点击量中的元素h){
WriteLine(String.Format(“{0}-{1}”,h.Name.ToString(),h.Elements().First().Value));
};

您的示例XML无效。它没有定义autn名称空间。我在重新格式化真值时去掉了名称空间。那是我的错误。名称空间存在于“真实”输出中。:)这起作用了。我不确定我怎么会错过仅仅使用XNamespace。干杯
IEnumerable<XElement> urls = raw.Elements(IDOLModule.GetNamespace()+ "hit");
            foreach (var single in urls)
            {
                var t = new url();
                t.Title="";
                t.Url="";
                listURL.Add(t);
            }
XElement doc = XElement.Parse(@"<autnresponse xmlns:autn=""http://schemas.autonomy.com/aci/"">
                                  <action>QUERY</action>
                                  <response>SUCCESS</response>
                                  <responsedata>
                                    <autn:numhits>2</autn:numhits>
                                    <autn:totalhits>2</autn:totalhits>
                                    <autn:totaldbdocs>2</autn:totaldbdocs>
                                    <autn:totaldbsecs>2</autn:totaldbsecs>
                                    <autn:hit>
                                      <autn:reference>http://blah</autn:reference>
                                      <autn:title>my title</autn:title>
                                    </autn:hit>
                                    <autn:hit>
                                      <autn:reference>http://blah</autn:reference>
                                      <autn:title>my title</autn:title>
                                    </autn:hit>
                                  </responsedata>
                                </autnresponse>");
XNamespace ns = ("http://schemas.autonomy.com/aci/");
//Console.WriteLine(doc.Descendants(ns + "numhits").First().Value);
IEnumerable<XElement> hits=doc.Descendants(ns + "hit");
foreach (XElement h in hits){
    Console.WriteLine(String.Format("{0} - {1}",h.Name.ToString(),h.Elements().First().Value));
};