C# 如何搜索和导航XML节点
我有以下XML:C# 如何搜索和导航XML节点,c#,.net,xml,C#,.net,Xml,我有以下XML: <LOCALCELL_V18 ID = "0x2d100000"> <MXPWR ID = "0x3d1003a0">100</MXPWR> </LOCALCELL_V18> <LOCALCELL_V18 ID = "0x2d140000"> <MXPWR ID = "0x3d1403a0">200</MXPWR> </LOCALCELL_V18> <LOCALC
<LOCALCELL_V18 ID = "0x2d100000">
<MXPWR ID = "0x3d1003a0">100</MXPWR>
</LOCALCELL_V18>
<LOCALCELL_V18 ID = "0x2d140000">
<MXPWR ID = "0x3d1403a0">200</MXPWR>
</LOCALCELL_V18>
<LOCALCELL_V18 ID = "0x2d180000">
<MXPWR ID = "0x3d1803a0">300</MXPWR>
</LOCALCELL_V18>
100
200
300
我想获得每个
的内部文本。但是,不允许使用ID# 查找内部文本,因为它并不总是相同的。这是我的密码:
XmlNodeList LocalCell = xmlDocument.GetElementsByTagName("LOCALCELL_V18");
foreach (XmlNode LocalCell_Children in LocalCell)
{
XmlElement MXPWR = (XmlElement)LocalCell_Children;
XmlNodeList MXPWR_List = MXPWR.GetElementsByTagName("MXPWR");
for (int i = 0; i < MXPWR_List.Count; i++)
{
MaxPwr_form_str = MXPWR_List[i].InnerText;
}
}
XmlNodeList LocalCell=xmlDocument.GetElementsByTagName(“LocalCell_V18”);
foreach(XmlNode LocalCell_LocalCell中的子节点)
{
XmlElement MXPWR=(XmlElement)LocalCell_子项;
XmlNodeList MXPWR_List=MXPWR.GetElementsByTagName(“MXPWR”);
对于(int i=0;i
如有任何意见,将不胜感激 我会用。它就是为这类问题设计的。比如:
using System.Xml;
using System.Xml.XPath;
....
string fileName = "data.xml"; // your file here
XPathDocument doc = new XPathDocument(fileName);
XPathNavigator nav = doc.CreateNavigator();
// Compile an xpath expression
XPathExpression expr = nav.Compile("./LOCALCELL_V18/MXPWR");
XPathNodeIterator iterator = nav.Select(expr);
// Iterate on the node set
while (iterator.MoveNext())
{
string s = iterator.Current.Value;
}
当我在XML文件(包装在根节点中)上运行此操作时,我得到:
我会使用XLinq:
using System.Xml.Linq;
var xDoc = XDocument.Load("data.xml");
var mxpwrs = xDoc.Descendants("MXPWR");
foreach (var mxpwr in mxpwrs)
{
Console.WriteLine(mxpwr.Value);
}
Linq的完美使用消除了对Xpath的需求。
using System.Xml.Linq;
var xDoc = XDocument.Load("data.xml");
var mxpwrs = xDoc.Descendants("MXPWR");
foreach (var mxpwr in mxpwrs)
{
Console.WriteLine(mxpwr.Value);
}