1
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Text;
using System.Windows.Forms;
using System.Xml;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Plus_Click(object sender, EventArgs e)
        {
            string FValue = id.Text;
            string SValue = id2.Text;
            string ending;
            string url = "http://localhost:56254/api/add?id=" + FValue + "&id2=" + SValue;
            WebClient client = new WebClient();
            client.Headers["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1";
            client.Headers["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            string data = client.DownloadString(url);
            XmlDocument xdoc = new XmlDocument();

            xdoc.LoadXml(data);
   -->      XmlNode xnode = xdoc.SelectSingleNode("End");
            ending = xnode.InnerText;
            Answer.Text = ending;
        }
    }
}

これは、終了時にnullを返し続ける私のコードであり、矢印にブレーカーを置くと、count=0と表示されます。これが私のxmlです。

- <Calcs xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Calculator.Models">
              <End>10</End> 
              <FValue>5</FValue> 
              <SValue>5</SValue> 
  </Calcs>

そして、Endを呼び出すと、Endと呼ばれるノードがないことを通知し続けます。nullを返し続けます。何か間違ったことをしていますか? http://i45.tinypic.com/24cgkld.png

4

2 に答える 2

1

このSelectSingleNodeメソッドはXPath式を想定しています。これを試してください:

XmlNode xnode = xdoc.SelectSingleNode("//End");

編集:これは名前空間の問題です。以下を試してください。

XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(xml);

XmlNamespaceManager nsmgr = new XmlNamespaceManager(xdoc.NameTable);
nsmgr.AddNamespace("cm", "http://schemas.datacontract.org/2004/07/Calculator.Models");

XmlNode xnode = xdoc.SelectSingleNode("//cm:End", nsmgr);
于 2012-06-21T17:14:25.710 に答える
0
XmlNode xnode = doc.SelectSingleNode("Calcs/End");
于 2012-06-21T17:17:01.793 に答える