C#操作XML,如何获取指定节点值?
2个回答
2015-05-02 · 知道合伙人软件行家
Axure夜话
知道合伙人软件行家
向TA提问 私信TA
知道合伙人软件行家
采纳数:1197
获赞数:1344
1992年毕业于太原理工大学,20年IT公司工作经验现任山西誉海和科技有限公司技术总监,老二牛车教育课程总监
向TA提问 私信TA
关注
展开全部
C#操作XML 有以下几种方式:
1:使用XmlDocument相关类库和方法操作xml
2:使用XDocument相关类库和方法操作xml
3:使用XmlReader和XmlWriter相关类库和方法操作xml
获得指定节点的值也需要 分为属性和元素
1:使用XmlDocument
XmlDocument doc = new XmlDocument();
doc.Load("Customer2.xml");
// XmlNodeList nodeList = doc.GetElementsByTagName("row");
XmlNodeList nodeList = doc.SelectNodes("/Table/row");
//读取属性+元素
foreach (XmlNode item in nodeList)
{
customerInfo.AppId = item.Attributes["AppID"].Value;
customerInfo.CustomerID = item["CustomerID"].InnerText;
}
2:使用XDocument
XDocument xdoc = XDocument.Load("Customer2.xml");
var custs = from customer in xdoc.Descendants("row")
select new
{//读取属性+元素
Version = customer.Attribute("Version").Value,
CustomerID = customer.Element("CustomerID").Value,
};
3:使用XmlReader
XmlReader reader = XmlReader.Create("Customer2.xml", settings);
//读取属性
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
switch (reader.Name)
{
case "row":
customerInfo = new CustomerInfo();
if (reader.HasAttributes)
{
customerInfo.AppId = reader.GetAttribute("AppID");
customerInfo.Version = reader.GetAttribute("Version");
}
break;
case "CustomerID":
customerInfo.CustomerID = reader.ReadString();
break;
}
}
1:使用XmlDocument相关类库和方法操作xml
2:使用XDocument相关类库和方法操作xml
3:使用XmlReader和XmlWriter相关类库和方法操作xml
获得指定节点的值也需要 分为属性和元素
1:使用XmlDocument
XmlDocument doc = new XmlDocument();
doc.Load("Customer2.xml");
// XmlNodeList nodeList = doc.GetElementsByTagName("row");
XmlNodeList nodeList = doc.SelectNodes("/Table/row");
//读取属性+元素
foreach (XmlNode item in nodeList)
{
customerInfo.AppId = item.Attributes["AppID"].Value;
customerInfo.CustomerID = item["CustomerID"].InnerText;
}
2:使用XDocument
XDocument xdoc = XDocument.Load("Customer2.xml");
var custs = from customer in xdoc.Descendants("row")
select new
{//读取属性+元素
Version = customer.Attribute("Version").Value,
CustomerID = customer.Element("CustomerID").Value,
};
3:使用XmlReader
XmlReader reader = XmlReader.Create("Customer2.xml", settings);
//读取属性
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
switch (reader.Name)
{
case "row":
customerInfo = new CustomerInfo();
if (reader.HasAttributes)
{
customerInfo.AppId = reader.GetAttribute("AppID");
customerInfo.Version = reader.GetAttribute("Version");
}
break;
case "CustomerID":
customerInfo.CustomerID = reader.ReadString();
break;
}
}
展开全部
你直接用InnerText是不可能达到你的目的的。
对于内含子节点的节点,不应该直接放置文本内容。如果有需要,你可以增加一个特殊的子节点,比如Content。因为按照你这样的,操作不是很保险。
对于你的这个问题,也不是完全不可以解决,只是不安全。
你可以对你的Test节点枚举其所有的直接子节点,你会发现其中有一个子节点就是这个节点的文本内容的节点,具体这个节点的识别我忘记了(呵呵,好久没这样调试过了),你可以调试跟踪下,然后有了个定性后,再确定方法来处理。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询