日期:2014-05-18  浏览次数:20839 次

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
#do