首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

XML 内联构架搜索与修改,该怎么解决

2012-02-19 
XML 内联构架搜索与修改XML 文件如下:StorehouseClass.xml?xml version1.0 standaloneyes?dsPubs

XML 内联构架搜索与修改
XML 文件如下:StorehouseClass.xml

<?xml version="1.0" standalone="yes"?>
<dsPubs xmlns="http://www.tempuri.org/dsPubs.xsd">
  <xs:schema id="dsPubs" targetNamespace="http://www.tempuri.org/dsPubs.xsd" xmlns:mstns="http://www.tempuri.org/dsPubs.xsd" xmlns="http://www.tempuri.org/dsPubs.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
  <xs:element name="dsPubs" msdata:IsDataSet="true" msdata:Locale="en-US">
  <xs:complexType>
  <xs:choice minOccurs="0" maxOccurs="unbounded">
  <xs:element name="StorehouseClass">
  <xs:complexType>
  <xs:sequence>
  <xs:element name="SC_ID" type="xs:string" />
  <xs:element name="SC_Name" type="xs:string" />
  <xs:element name="SC_IsWave" type="xs:string" />
  </xs:sequence>
  </xs:complexType>
  </xs:element>
  </xs:choice>
  </xs:complexType>
  </xs:element>
  </xs:schema>
  <StorehouseClass>
  <SC_ID>1</SC_ID>
  <SC_Name>城网库房</SC_Name>
  <SC_IsWave>否</SC_IsWave>
  </StorehouseClass>
  <StorehouseClass>
  <SC_ID>2</SC_ID>
  <SC_Name>农网库房</SC_Name>
  <SC_IsWave>是</SC_IsWave>
  </StorehouseClass>
  <StorehouseClass>
  <SC_ID>5</SC_ID>
  <SC_Name>55</SC_Name>
  <SC_IsWave>是</SC_IsWave>
  </StorehouseClass>
  <StorehouseClass>
  <SC_ID>8</SC_ID>
  <SC_Name>8</SC_Name>
  <SC_IsWave>是</SC_IsWave>
  </StorehouseClass>
</dsPubs>
我现在想找到SC_ID为8的StorehouseClass元素,写了几个测试程序,都不行,头痛啊!
(注,这个XML 文件属于内联架构,和MSDN给出的例子有局别)。
测试程序如下:
XmlDocument doc = new XmlDocument();
  doc.Load(HttpContext.Current.Server.MapPath("~/App_Data/StorehouseClass.xml"));

  XmlNode node = doc.SelectSingleNode("/*");
  Response.Write(node.Name + "<br>");

  node = doc.SelectSingleNode(".");
  Response.Write(node.Name + "<br>");

  node = doc.SelectSingleNode("child::node()");
  Response.Write(node.Name + "<br>");


  XmlNodeList xmlList = node.SelectNodes("child::node()");
   
  Response.Write(xmlList.Count+"<br>");

  foreach (XmlNode mc in xmlList)
  {
  Response.Write(mc.Name+"=="+mc.NodeType+"<br>");
  }

  xmlList = node.SelectNodes("StorehouseClass");

  Response.Write(xmlList.Count + "<br>");

  xmlList = node.SelectNodes("./StorehouseClass");
  Response.Write(xmlList.Count + "<br>");
============================================================================
输出结果为:
dsPubs
#document
dsPubs
5
xs:schema==Element
StorehouseClass==Element
StorehouseClass==Element


StorehouseClass==Element
StorehouseClass==Element
0
0
各位大哥大姐,有做过XML数据库的,给指点一下迷津。


[解决办法]

C# code
             XmlDocument doc = new XmlDocument();            doc.Load("..\\..\\StorehouseClass.xml");            string srch = "/";            XmlNodeList foundNode = doc.SelectNodes(srch);            foreach (XmlNode n in foundNode)            {                XmlNodeList x2 = n.ChildNodes[1].ChildNodes;//dsPubs的字节点                foreach (XmlNode n2 in x2)                {                    XmlNode mm = n2.FirstChild;                    if (mm.InnerText.ToString() == "8" )                    {                        MessageBox.Show("找到了");                    }                }            }
[解决办法]
大概是这样子的.具体的你自己再试试.

热点排行