使用C#解析XML节点

时间:2017-01-21 03:44:23

标签: c# xml nodes

我返回的XML格式为

<NewDataSet>
  <Table>
    <CITY>Hull</CITY>
    <STATE>GA</STATE>
    <ZIP>30646</ZIP>
    <AREA_CODE>706</AREA_CODE>
    <TIME_ZONE>E</TIME_ZONE>
  </Table>
</NewDataSet>

我想提取TIME_ZONE中包含的值。此语法返回此数据System.Xml.XmlNode result如何解析XmlNode以查找TIME_ZONE

我已尝试过以下内容 - 但它给了我一个错误

  

无法从'System.Xml.XmlNode'转换为'string'

语法尝试

System.Xml.XmlNode result = uszipcode.GetInfoByZIP(zip);
XDocument xml = XDocument.Parse(result);

2 个答案:

答案 0 :(得分:1)

您可以从XmlNode属性获取OuterXml引用的XML部分的字符串表示形式:

System.Xml.XmlNode result = uszipcode.GetInfoByZIP(zip);
XDocument xml = XDocument.Parse(result.OuterXml);
String timeZone = (string)xml.Descendants("TIME_ZONE").First();

或者,您可以直接使用XPathSelectSingleNode()XmlNode找到目标元素:

System.Xml.XmlNode result = uszipcode.GetInfoByZIP(zip);
String timeZone = xml.SelectSingleNode(".//TIME_ZONE").InnerText;

答案 1 :(得分:-1)

看起来你有一个错字。该错误是由于在XmlDocument.Parse需要字符串时传递XMLNode。试试这个:

XmlNode result = uszipcode.Get...
string myNodeValue = result.OutterXml; // this will give you XML node tree you need as a string..
XDocument xml = XDocument.parse(mynodeValue);