如何获取下面的Xml文件中的节点? [英] How to get the nodes in the below Xml file?

查看:126
本文介绍了如何获取下面的Xml文件中的节点?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何获取以下Xml文件中的节点?

 <?  xml     version   =  1.0    encoding   =  utf-8    >  
- < xd:xmldiff version = 1.0 srcDocHash = 4685481238288745685 options = IgnoreChildOrder IgnoreNamespaces IgnorePI IgnorePrefixes 片段 = no xmlns:xd = http:// schemas.microsoft.com/xmltools/2002/xmldiff\">
- < xd:node 匹配 < span class =code-keyword> = 1 >
- < xd:add >
< 年龄 > 12 < /年龄 >
< 电话 > 12345678 < /电话 >
< 电子邮件 > as@u.com < /电子邮件 >
< 地址 > qwqw < / address >
< / xd:add >
< / xd:node >
< / xd:xmldiff >





我想要获取节点年龄/电话/电子邮件/地址:



  string  childnode =  string  .Empty; 
XmlDocument docXml = new XmlDocument();
docXml.Load(diffXml);

var nsmgr = new XmlNamespaceManager(docXml.NameTable);
nsmgr.AddNamespace( xd http://schemas.microsoft.com/xmltools/2002/xmldiff);

var nl = docXml.SelectNodes( // xd:add / @ href,nsmgr);
// var nl = docXml.SelectNodes(// xd:add,nsmgr);

// 获取所有玩家节点的列表

// 定义单个节点
XmlNode节点;

// 获取根Xml元素
XmlElement root = docXml.DocumentElement;

for int i = 0 ; i < root.ChildNodes.Count; i ++)
{
if string .IsNullOrEmpty(childnode)== true
{
childnode = root.Name;
}
else
{
childnode + = + root.Name;
}
}

解决方案

尝试使用XmlNode.SelectSingleNode方法



 XmlDocument docXml =  new  XmlDocument(); 
docXml.Load(diffXml);

var nsmgr = new XmlNamespaceManager(docXml.NameTable);
nsmgr.AddNamespace( xd http://schemas.microsoft.com/xmltools/2002/xmldiff);
XmlElement root = docXml.DocumentElement;

XmlNode node = root.SelectSingleNode( 年龄,nsmgr);
Console.WriteLine(node.InnerXml);

XmlNode node = root.SelectSingleNode( Phone,nsmgr);
Console.WriteLine(node.InnerXml);

// ......等等......


How to get the nodes in the below Xml file?

<?xml version="1.0" encoding="utf-8" ?>
- <xd:xmldiff version="1.0" srcDocHash="4685481238288745685" options="IgnoreChildOrder IgnoreNamespaces IgnorePI IgnorePrefixes" fragments="no" xmlns:xd="http://schemas.microsoft.com/xmltools/2002/xmldiff">
- <xd:node match="1">
- <xd:add>
  <Age>12</Age>
  <Phone>12345678</Phone>
  <Email>as@u.com</Email>
  <address>qwqw</address>
  </xd:add>
  </xd:node>
  </xd:xmldiff>



I want to fetch the nodes Age/Phone/Email/address:

string childnode = string.Empty;
XmlDocument docXml = new XmlDocument();
docXml.Load(diffXml);

var nsmgr = new XmlNamespaceManager(docXml.NameTable);
nsmgr.AddNamespace("xd", "http://schemas.microsoft.com/xmltools/2002/xmldiff");

var nl = docXml.SelectNodes("//xd:add/@href", nsmgr);
//var nl = docXml.SelectNodes("//xd:add", nsmgr);

// Get a list of all player nodes

// Define a single node
XmlNode node;

// Get the root Xml element
XmlElement root = docXml.DocumentElement;

for (int i = 0; i < root.ChildNodes.Count; i++)
{
    if (string.IsNullOrEmpty(childnode) == true)
    {
        childnode = root.Name;
    }
    else
    {
        childnode += "," + root.Name;
    }
}

解决方案

Try it with XmlNode.SelectSingleNode Method :

XmlDocument docXml = new XmlDocument();
docXml.Load(diffXml);
 
var nsmgr = new XmlNamespaceManager(docXml.NameTable);
nsmgr.AddNamespace("xd", "http://schemas.microsoft.com/xmltools/2002/xmldiff");
XmlElement root = docXml.DocumentElement;

XmlNode node = root.SelectSingleNode("Age", nsmgr);
Console.WriteLine(node.InnerXml);

XmlNode node = root.SelectSingleNode("Phone", nsmgr);
Console.WriteLine(node.InnerXml);

// ... and so long ...


这篇关于如何获取下面的Xml文件中的节点?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆