SQL Server中xml类型的字段中存储的内容如下:
<Test>
<X>
<D>1</D>
<D>2</D>
<D>3</D>
</X></Test>
我想把XML中存储的D的三个值1,2,3取出来放在数组或者list里面,如:{1,2,3},该怎么写代码?
解决方案 »
- 求助,SQL不能插入重复的值
- 关于取补运算的疑问?
- Activator.CreateInstance实例化类时,如果构造器中有Ref参数,怎样设置?
- 二进制流的使用问题~~~希望大家帮我看一下~~~
- 请问这个容器是什么控件?
- 请教一个弱问题。怎样调试DLL,我在dll里面设的断点中间有个问号,说没加载符号
- VS2005中,如何连接SQL2005呀?不用工具栏组键,用写代码的方式完成,请问该怎么写连接字符传呢?
- e.Control
- 在VC里面如何调用在C#里面写的函数呀?
- 理论问题!!!
- 错误提示:RPC服务未在侦听
- 求助!!comboBox.ValueMember 出错 无法绑定到新的显示成员 参数名: newDisplayMember
http://topic.csdn.net/u/20101027/13/dcb500a7-3e23-4347-8e03-0b02e3761d12.html
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.LoadXml(xmlStr);
XmlNodeList nodes=xmlDoc.SelectNodes(@"/Test/X/D");
List<string> values=new List<string>();
foreach(XmlNode node in nodes)
values.Add(node.InnerText);
Comparing XmlReader to SAX Reader
http://msdn.microsoft.com/en-us/library/sbw89de7(v=vs.71).aspx): SAX参考: http://en.wikipedia.org/wiki/Simple_API_for_XMLXmlTextReader 使用参考:
http://msdn.microsoft.com/en-us/library/system.xml.xmltextreader(v=vs.100)XmlTextReader例子参考:
http://msdn.microsoft.com/en-us/library/system.xml.xmltextreader.value
数据库中读出的是string吧
string szInputXml = "<TestDataXml><DataName>testing</DataName></TestDataXml>";
XmlTextReader reader = new XmlTextReader( new System.IO.StringReader( szInputXml ) );
reader.Read();
string inner = reader.ReadInnerXml();
代码来自:
http://stackoverflow.com/questions/4601139/how-to-read-a-xml-string-into-xmltextreader-type
DECLARE @x XML
SET @x = CONVERT(XML,'<items><item id="' + REPLACE(@BrandID, ',', '"/><item id="') + '"/></items>')
SELECT T.item.value('@id[1]','INT') AS link from @x.nodes('//items/item') T(item)
<X>
<D>1</D>
<D>2</D>
<D>3</D>
</X>
<Y>
<D>4</D>
<D>5</D>
<D>6</D>
</Y>
</Test>
用如下代码
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element&& reader.LocalName == "D")
{
list.Add(reader.ReadString().ToString());
}
}
最后会把所有<D>的值都取出来1,2,3,4,5,6.我现在如果只取<X>中<D>的值(1,2,3),该如何修改代码?
string xmlString = @"<Test>
<X>
<D>1</D>
<D>2</D>
<D>3</D>
</X>
<Y>
<D>4</D>
<D>5</D>
<D>6</D>
</Y>
</Test>"; XmlTextReader reader = new XmlTextReader(new System.IO.StringReader(xmlString));
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
if (reader.LocalName.Equals("Y"))
{
reader.Skip();
}
if (reader.LocalName.Equals("D"))
{
Console.WriteLine(reader.ReadString().ToString());
}
}
}