为什么我无法取出xml文件里面某个节点的Innertext?

zhongxin 2003-08-16 11:04:17
"<OnlineChat>
<IP>192.168.0.23</IP>
<Port>3011</Port>
<ID>1</ID>
<ToID>1</ToID>
<Message>{\\rtf1\\ansi\\ansicpg936\\deff0\\deflang1033\\deflangfe2052{\\fonttbl{\\f0\\fnil\\fcharset134 \\'cb\\'ce\\'cc\\'e5;}}\r\n\\viewkind4\\uc1\\pard\\lang2052\\f0\\fs18 66\\par\r\n}\r\n</Message>
<Time>2003-8-16 10:52:03</Time>
</OnlineChat>"
用下面两种方法都无法提取<Message>节点里面的值
string str = xd.GetElementsByTagName("Message").Item(0).InnerText;
string str1 = xd.LastChild.LastChild.PreviousSibling.InnerText;
而用同样的方法则可以提取其他节点的植,比如<IP>192.168.0.23</IP>等
哪位高手告诉小弟这是为什么?谢谢
...全文
100 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
saucer 2003-08-17
  • 打赏
  • 举报
回复
it works for me:

using System;
using System.Xml;

class TestXml
{
public static void Main()
{
string s= @"<OnlineChat>
<IP>192.168.0.23</IP>
<Port>3011</Port>
<ID>1</ID>
<ToID>1</ToID>
<Message>{\\rtf1\\ansi\\ansicpg936\\deff0\\deflang1033\\deflangfe2052{\\fonttbl{\\f0\\fnil\\fcharset134 \\'cb\\'ce\\'cc\\'e5;}}\r\n\\viewkind4\\uc1\\pard\\lang2052\\f0\\fs18 66\\par\r\n}\r\n</Message>
<Time>2003-8-16 10:52:03</Time>
</OnlineChat>";

XmlDocument xd = new XmlDocument();
xd.LoadXml(s);
string str = xd.GetElementsByTagName("Message")[0].InnerText;
Console.WriteLine(str);
string str1 = xd.LastChild.LastChild.PreviousSibling.InnerText;
Console.WriteLine(str1);
}
}
cnhgj 2003-08-16
  • 打赏
  • 举报
回复
doc.GetElementsByTagName("Message")[0].innerText;可以吗?
zhongxin 2003-08-16
  • 打赏
  • 举报
回复
没人会么?
panyee 2003-08-16
  • 打赏
  • 举报
回复
"\r\n"??

string str = "<OnlineChat><IP>192.168.0.23</IP><Port>3011</Port><ID>1</ID>";
str += "<ToID>1</ToID><Message>{\\rtf1\\ansi\\ansicpg936\\deff0\\deflang1033\\deflangfe2052{\\fonttbl{\\f0\\fnil\\fcharset134 \\'cb\\'ce\\'cc\\'e5;}}\r\n\\viewkind4\\uc1\\pard\\lang2052\\f0\\fs18 66\\par\r\n}\\r\\n</Message>";
str += "<Time>2003-8-16 10:52:03</Time></OnlineChat>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(str);

MessageBox.Show(doc.GetElementsByTagName("Message").Item(0).InnerText);

取得不对么?
zhongxin 2003-08-16
  • 打赏
  • 举报
回复
没有人会么?
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") 'JAVASCRIPT中的创建对象 set objXml=CreateObject("Microsoft.XMLDOM") '创建解析器对象 objXml.async="false" objXml.load("test.xml") '装载xml文件 objXml.load(Server.MapPath("test.xml")) '根据绝对路径装载xml文件 Set objRootsite = xmlDoc.getElementsByTagName("NewList") '查找某一节点"NewList" objNextRootsiteName = xmlDoc.getElementsByTagName("NewList").item(0).nodeName Set objRootsite = objXml.documentElement.selectSingleNode("NewList") '查找某一节点"NewList" document.write(objRootsite.nodeName) '当前节点名称 objNextRootsite = objRootsite.childNodes.item(1) '查找"NewList"的第一子节点 objNextRootsiteText = objNextRootsite.childNodes.item(1).text '查找"NewList"的第一子节点节点内容 xmlChildNode = objXml.documentElement.childNodes '获取当前节点 document.Write (xmlChildNode.nodename) '当前节点名称 document.write (xmlChildNode.text) '当前节点文本内容 frm.label.innerText = xmlChildNode.item(1).text '将Xml中的文本内容转换为Html中的内容 xmlChildNode.GetAttributeNode("name").Nodevalue '获取属性名为name的属性值 xmlChildNode.length 'xmlChildNode节点的子节点数量 '取出一个节点的属性集合 set objnodes=objXml.documentElement.SelectSingleNode("//people/man").GetAttributeNode("name").attributes for each element in objnodes response.write element.nodename '属性名 response.write element.nodevalue '属性值 next xmlDoc.getElementsByTagName("from").item(0).text xmlDoc.removeChild objRootsite '删除某个节点 objXml.parseError '错误接受容器 objXml.parseError.errorCode '返回长整型错误代码 objXml.parseError.reason '返回字符串型错误原因 objXml.parseError.line '返回长整型错误行号 objXml.parseError.linePos '返回长整型错误行字符位置 objXml.parseError.srcText '返回错误所在行的源代码 objXml.parseError.url '返回url装载文档指针---最近一份含有解析错误的XML文档的URL地址 objXml.parseError.filePos '返回长整型错误文件位置---在文档中的绝对字符位置

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧