use*_*072 1 c# xml asp.net web-services
我正在尝试从 Web 响应中读取 xml 并从中获取选定的节点(即链接)。这是我到目前为止所拥有的,它显示“System.Xml.XmlElement”作为输出。
WRequest 方法,使用 Web 请求向 url 发送 POST 请求,并返回字符串 xml 响应,例如:
<status> <code>201</code>
<resources_created>
<link href="####" rel="############" title="####" /> 
</resources_created> 
<warnings> <warning>display_date is read-only</warning> </warnings> 
</status>
Run Code Online (Sandbox Code Playgroud)
ReadUri2方法
public static string readUri2()
    {
        string uri = "";
        string xml = WRequest();
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xml);
        XmlNode elem = xmlDoc.DocumentElement.FirstChild;
        uri = elem.ToString();
        return uri;
        }
Run Code Online (Sandbox Code Playgroud)
页面加载调用
 protected void Page_Load(object sender, EventArgs e)
    {
        string uri = readUri2();
        Label1.Text = Server.HtmlEncode(uri);
    }
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激。非常感谢。
直接的问题(您看到的原因System.Xml.XmlElement)是您正在调用ToString一个XmlElement,它不会覆盖该方法。您可能想使用InnerXml或OuterXml属性来代替:
XmlNode elem = xmlDoc.DocumentElement.FirstChild;
return elem.OuterXml;
Run Code Online (Sandbox Code Playgroud)
这将返回第一个子级的整个 XML,即code. 接下来,您需要更改要查找的元素,并获取正确的属性。
附带说明一下,我强烈建议使用 LINQ to XML - 它通常是更好的 XML API。例如:
// TODO: Rename the `WRequest` method; that's horrible.
var document = XDocument.Parse(WRequest());
var href = document.Descendants("link").Single().Attribute("href").Value;
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           3615 次  |  
        
|   最近记录:  |