马克思写给燕妮的信:asp.net(C#)读取xml

来源:百度文库 编辑:神马品牌网 时间:2024/04/26 14:45:55
用asp.net(C#)从XML里读出一条数据。。。不是全部。一条///

谢谢了。。不知道用DataReader行不行。

就是说把一条数据绑定到一个Web控件里面去。。
是XML里的数据。可以用条件。比如说。
<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
<Employees>
<name>中国</name>
<xb>男</xb>
<QQ>1111111</QQ>
</Employees>
<Employees>
<name>Andrew</name>
<xb>女</xb>
<QQ>222222</QQ>
</Employees>
<Employees genre="abc">
<name>gogo</name>
<xb>女</xb>
<QQ>333333</QQ>
</Employees>
</NewDataSet>
要从上面这个xml里读出name是“中国”的QQ号
或是genre是"abc"的QQ号。。

谢谢了啊!!!
谢谢栽培者及mgh3188 受两位启发写了
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load(Server.MapPath("myxml.xml"));
XmlNodeList nodeList=xmlDoc.SelectSingleNode("NewDataSet").ChildNodes;//获取NewDataSet节点的所有子节点
foreach(XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
string name=TextBox1.Text;
if(xe.GetAttribute("genre")==name)
{
XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach(XmlNode xn1 in nls)//遍历
{
XmlElement xe2=(XmlElement)xn1;//转换类型
if(xe2.Name=="QQ")//如果找到
{
Label1.Text=xe2.InnerText;
break;//找到退出来就可以了
}
}
break;
}
}
不过只能用属性查,如
<Employees genre="go">
<name>OK</name>
<xb>女</xb>
<QQ>asdasdasd</QQ>
</Employees>
只能查genre是"go"的不能查name是"OK"的。
有没有别的办法查出来。再次麻烦各位了!
mgh3188代码里的document找不到?

遍历吧
呵呵
不过有一点要注意下
xml遍历是每次从头开始
最好在执行完一次后加个netnode什么东西
public string GetAppSettings(string key)
{
lock(this)
{
foreach(XmlNode node in document.DocumentElement.ChildNodes)
{
if(node.LocalName == key)
return node.InnerText;
}
}
return "";
}

Name 的话应该可以用 selectSingleNode 方法来获取,genre为属性,可能需要遍历。
------------------
刚刚用JavaScript测试了一下,selectSingleNode 也需要遍历,不能直接得到那一条记录。
抱歉,我不会C#,只是语言都可以相通的,
以下是我的Javascript测试代码:
<SCRIPT Language="Javascript">
function getInfos(oXMLSource,sName)
{
var oXML,oXMLRoot,oXMLItems,oXMLItem;
var iLength;

try
{
oXML = new ActiveXObject("MSXML2.DOMDocument");
}
catch (e)
{
try
{
oXML = new ActiveXObject("Microsoft.XMLDOM");
}
catch (e) {}
}

// 加载XML内容
oXML.loadXML(oXMLSource);
var intReadyState = oXML.readyState;
if(intReadyState != 4) return;

if(oXML == null || oXML.xml == "")
{
return;
}

// 获取XML所有节点
oXMLRoot = oXML.documentElement;
// 获取节点
oXMLItems = oXMLRoot.selectNodes("Employees");
// 获取节点长度(个数)
iLength = oXMLItems.length;

if (iLength==0)
{
return;
}
if (iLength==1)
{
if (oXMLItems.item(0).selectSingleNode("name").text==sName)
{
return oXMLItems.item(0).selectSingleNode("QQ").text
}
else
return;
}
else
{
for (var i = 0; i < iLength; i++)
{
oXMLItem = oXMLItems.item(i);
if (oXMLItem.selectSingleNode("name").text==sName)
{
return oXMLItem.selectSingleNode("QQ").text
}
}
}

oXMLRoot = null;
oXMLItems = null;
oXMLItem = null;
oXML = null;
}
</SCRIPT>
<SCRIPT Language="VBScript">
function btnTest_onclick()
msgbox getInfos(txtTest.value,"中国")
end function
</SCRIPT>

<textarea name="txtTest" rows="10" cols="50"></textarea>
<button name="btnTest">测试</button>