0

私は周りを見回しましたが、必要なソリューションを実装できませんでした。これが繰り返しの質問のように思われる場合は、お詫び申し上げます。

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>

linqを使用してカスタムオブジェクトのリストをXMLに読み込もうとしています。

これが私がコードとして試したものですが、常に結果が得られません。

 var namespaceManager = new XmlNamespaceManager(new NameTable());
 namespaceManager.AddNamespace("autn", "http://schemas.autonomy.com/aci/");

...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);
            }

urls変数は常に空に戻ります。autn:hitsノードをターゲットにして、それらのデータをオブジェクトにロードする必要があります。

乾杯、

4

1 に答える 1

0

あなたはそのようなことを試すことができます:

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));
};
于 2013-01-29T07:34:59.700 に答える