[英]Get child attributes of xml node c#
我试图从xml文档中的特定位置获取属性,xml看起来包含多个类似的标记名,如下所示:
<Message dataItemId="Axis_01" timestamp="2018-06-25T20:20:40.4374489Z"
name="[#] Numero inversioni" sequence="85988"
nativeCode="208573">208573</Message>
<Message dataItemId="Axis_02_InvDDone" timestamp="2018-06-
25T20:20:40.4374489Z" name="Error" sequence="85998"
nativeCode="208573">208573</Message>
如何只检索错误名称为Message的值? 以下是我尝试的代码,其中textbox1 =消息,而textbox2 =错误:
XmlDocument xmldoc = new XmlDocument();
XmlNodeList xmlnode;
try
{
xmldoc.Load("http://127.0.0.1:5000/cur");
XmlNode node2 = xmldoc.SelectSingleNode("'"+ textBox1.Text +
"'[name='" + textBox2.Text + "']");
listBox1.Items.Add(node2.ChildNodes.Item(0).InnerText.Trim());
}
您的XPath有点不正确。 为了进行测试,我对值进行了硬编码:
XmlNode messageNode = xmlDoc.SelectSingleNode("//Message[@name='Error']");
我认为您将能够轻松地将硬编码值替换为来自文本框的输入。
这将在整个Xml文档中搜索一个Message
节点,该节点具有名为name
且值为Error
的属性。 如果存在多个匹配项,则SelectSingleNode
将返回第一个匹配项。 如果需要,有一个SelectNodes
函数将返回多个值。
重要的位是:
\\\\Message
Message-指示XmlDocument查找“ Message
节点 @name
指示XmlDocument查找属性 当我运行它时发现:
<Message dataItemId =“ Axis_02_InvDDone” timestamp =“ 2018-06-25T20:20:40.4374489Z” name =“ Error” sequence =“ 85998” nativeCode =“ 208573”> 208573 </ Message>
我不清楚要检索哪个属性。 这将检索dataItemId
属性的值
Debug.Print(messageNode.Attributes["dataItemId"].InnerText);
Axis_02_InvDDone
要获取该节点的Text值,即208573,请使用:
Debug.Print(messageNode.InnerText);
下面是来自以下链接的代码: https : //msdn.microsoft.com/zh-cn/library/system.xml.xmlnode.childnodes(v=vs.110).aspx
public class Sample {
public static void Main() {
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"<price>19.95</price>" +
"</book>");
XmlNode root = doc.FirstChild;
//Display the contents of the child nodes.
if (root.HasChildNodes)
{
for (int i=0; i<root.ChildNodes.Count; i++)
{
Console.WriteLine(root.ChildNodes[i].InnerText);
}
}
}
}
您可以使用条件获取特定的子节点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.