本意是想获取所有的xml标签的,结果为了单个标签的获取查了挺久
xml文档
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<DecImportResponse xmlns="http://www.chinaport.gov.cn/dec">
<ResponseCode>1</ResponseCode>
<ErrorMessage>hhh</ErrorMessage>
<ClientSeqNo>bbb</ClientSeqNo>
</DecImportResponse>
第一步,加载xml文档
string uri = @"dd.xml";
XmlReader xr = XmlReader.Create(uri);
XmlDocument doc = new XmlDocument();
doc.Load(xr);//载入源XML文件
var root = doc.DocumentElement;
创建参数的一些设置
XmlReaderSettings setting = new XmlReaderSettings();
setting.Async = true;
XmlReader xr = XmlReader.Create(uri, setting);
第二步,取所有的标签节点
var root = doc.DocumentElement;
foreach(XmlNode items in root.ChildNodes)
{
var InnerText = items.InnerText;
var name = items.Name;
}
取所有的标签节点没什么,主要是当带有命名空间的时候单个标签的获取。有命名空间时需要给所有的标签加上命名空间,取单个值时通过命名空间来获取
XmlNamespaceManager nameSpace = new XmlNamespaceManager(doc.NameTable);
nameSpace.AddNamespace("abc", "http://www.chinaport.gov.cn/dec");
XmlElement resume = doc.DocumentElement;
//读取节点内容(要在节点前加命名空间前缀,如本例"abc:")
// 取单个参数
var text= resume.SelectSingleNode("abc:ResponseCode", nameSpace);