如何在c#中从xml获取特定值

时间:2013-11-13 11:21:05

标签: c# asp.net xml

我的问题有点典型,我对使用xml很新。请查看以下代码:

    XmlDocument xDoc = new XmlDocument();
    xDoc.Load(myxml);

    Response.Write("<p><strong>First Result</strong><br/>");

    for (int nodeCount = 0; nodeCount < xDoc.ChildNodes.Count; nodeCount++)
    {
        Response.Write(xDoc.ChildNodes[nodeCount].Name + ":");
        Response.Write(xDoc.ChildNodes[nodeCount].InnerXml + "<br/>");
    }

    Response.Write("</p>");

..我在aspx页面中得到的输出如下:

First Result
xml:
Response:OK122.160.37.198ININDIAWEST BENGALKOLKATA70015522.569788.3697+05:30

我想要它的价值'WEST BENGAL'和'KOLKATA'。我无法以xml格式读取/写入此内容,以便我可以获取所需的节点及其值。怎么做?

2 个答案:

答案 0 :(得分:1)

您可以使用XPath搜索XML。使用你的“xDoc”变量

XPathDocument doc = new XPathDocument(XmlReader(xDoc));
XPathNavigator nav = doc.CreateNavigator();
XPathExpression exprName = nav.Compile(xPathName);
XPathNodeIterator iteratorName = nav.Select(exprName)

答案 1 :(得分:0)

您可以使用Descendants()本身的XDocument功能,请考虑以下示例:

(注意 - 对数据的外观做了假设)

using System.Xml.Linq;
static void Main()
{
   var xml = "<Data><ININDIA>WEST BENGAL</ININDIA><ININDIA>KOLKATA</ININDIA></Data>";
   var xd = XDocument.Parse(xml);
   //get all `XElement` objects with the name "ININDIA"
   foreach (var e in xd.Root.Descendants()
        .Where(e=>e.Name.LocalName=="ININDIA"))
    {
      Console.WriteLine(e.Value);
    }
}

将产生

WEST BENGAL
KOLKATA