我很难理解这段代码,任何人都可以帮我解决这个问题吗? 如果我没错, StrStaffInfo 用于存储XML标记。
我想知道标签是如何存储在XML文件中的,以及如何访问这些标签?
<script runat="server">
Public StaffInfoXML as new xmlDocument
sub Page_Load(obj as object, e as eventargs)
Dim StrStaffInfo, strConnXMLData, strConnStr, SpString as String
Dim oStaffDAW as New DAWNET.DataAccess.XMLWrapper.DAW()
Dim oConn as new ConnectionString.Access.DataBase.IO.ConnectionString
' Fetch the Connection String from Configuration File
oConn.SetPath(MapPath(""))
strConnStr = oConn.FetchConnectionString(strConnXMLData)
SpString = "StaffInformationSelect '"& Decode(LOGONUSER.ToString) &"','"& Decode(CLIENTIP.ToString) &"','"& Decode(MACHINENAME.ToString) &"'"
oStaffDAW.FetchXml(strConnStr, SpString, StrStaffInfo)
StaffInfoXML.LoadXml(StrStaffInfo)
if (StaffInfoXML.GetElementsByTagName("RECORD").Count = 0)
Response.Redirect("Application.aspx")
Response.End
End if
end sub
TagName“记录”存储在哪里?我想要包含另一个Tag,并检查If条件。
答案 0 :(得分:1)
请注意直接回答您的问题,但strStaffInfo
是包含XML的字符串,并且正在使用以下行加载到XmlDocument
(StaffInfoXML
)中:
StaffInfoXML.LoadXml(StrStaffInfo)
标记RECORD
位于文档树中的某个位置。 GetElementsByTagName
返回文档中名称为“RECORD”的所有标记(节点)及其子节点中的XmlNodeList
。
如果您知道要查找的元素(标记)的名称,则可以再次调用GetElementsByName
,然后检查您/那些元素的值。 If
条件。
我还要看一下LINQ to XML(这是我解析XML的首选方法)。
答案 1 :(得分:1)
小心术语。标记只是由小于和大于字符分隔的文本。 元素具有开始和结束标记,并且可以在两者之间具有附加内容。元素是重要的。
代码调用StaffInformationSelect
,它似乎是数据库中存储过程,产生XML结果。是的,StrStaffInfo
应该将结果保存为包含XML的字符串。
然后将XML结果加载到StaffInfoXML
对象中,该对象是XMLDocument的实例,即.NET XML DOM(文档对象模型)类。
然后,它正在查看XML文档是否有任何RECORD元素,如果没有,则重定向到另一个页面。如果文件看起来像这样:
<?xml version="1.0"?>
<root>
<RECORD></RECORD>
<RECORD></RECORD>
</root>
Count属性的值为2.
除了您在现有代码中看到的GetElementsByTagName
方法外,请查看GetElementById,它会按唯一ID找到元素。
标签名称由StaffInformationSelect
定义。它可能对应于数据库中的表名。
GetElementsByTagName
将生成XmlNode
个对象的集合,您可以迭代这些对象。如果要对文档中的某些元素进行复杂的搜索,请查看XPathDocument,或者新的XDocument,它允许您在XML文档上运行LINQ查询。
如果可以将调试器附加到此代码,请在调用LoadXML的行上设置断点,您应该在StrStaffInfo变量中看到XML文档。