其他人建議使用LINQ to XML解決方案,如果可能的話,我也會使用它。
如果您遇到.NET 2.0,請使用XmlDocument
或甚至XmlReader
。
但是不要嘗試使用Substring
和IndexOf
自己操縱原始字符串。使用一個一些描述的XML API。否則你將得到它錯了。這是使用正確的工具來完成這項工作的問題。正確解析XML是一大塊工作 - 已經完成的工作。
現在,只是爲了讓這一個完整的答案,這裏是使用您的樣本數據的簡短但完整的程序:
using System;
using System.Xml.Linq;
class Test
{
static void Main()
{
string response = @"<?xml version='1.0' encoding='utf-8'?>
<upload><image><name></name><hash>Some text</hash></image></upload>";
XDocument doc = XDocument.Parse(response);
foreach (XElement hashElement in doc.Descendants("hash"))
{
string hashValue = (string) hashElement;
Console.WriteLine(hashValue);
}
}
}
顯然,這將循環在所有的hash
元素。如果您只需要一個,則可以根據您的要求使用doc.Descendants("hash").Single()
或doc.Descendants("hash").First()
。
請注意,我在此處使用的轉換和Value
屬性將返回元素內的所有文本節點的級聯。希望對你來說沒關係 - 或者如果需要的話,你可以得到第一個文本節點,這是一個直接的孩子。
作品完美!感謝您的完整解決方案 – user257412 2010-09-28 07:35:07