在VB.NET中读取XML节点

在VB.NET中读取XML节点,vb.net,Vb.net,在VS2008中使用VB.NET 示例XML文件 <MailListExportXML xsi:schemaLocation="com.efi.planner.mailing.export MonarchMailListExport.xsd" xmlns="com.efi.planner.mailing.export" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <MailListFiles> <

在VS2008中使用VB.NET

示例XML文件

<MailListExportXML xsi:schemaLocation="com.efi.planner.mailing.export MonarchMailListExport.xsd" xmlns="com.efi.planner.mailing.export" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<MailListFiles>
  <MailListFile MailListID="1" MailListName="Test Mail File 11-14-2013.csv" MailListDateTimeStamp="2013-12-04T19:18:00Z" MailListFileLocationPath="c:ImportedMailFiles" StatedFirstRecord="George Vaisey" StatedLastRecord="Mary Smith" TotalMailListRecordCount="1992"/></MailListFiles>
</MailListExportXML>

我正在努力从MailListName获取值以填充到文本框。

您可以尝试以下方法:

Dim xmlDoc As XmlDocument = New XmlDocument()
xmlDoc.Load(PATH TO XML FILE)

Dim docNode As XmlNode = xmlDoc.SelectSingleNode("MailListExportXML/MailListFiles/MailListFile[@MailListID=1]")
SOMETEXTBOX.Text = docNode.Attributes.GetNamedItem("MailListName").Value
xmlDoc = Nothing
根据您的错误,确保xmlDoc.Load。。。是实际XML文档的路径和名称。下面是MapPath示例,但您可以使用绝对路径,如c:\inetpub\wwwroot\webapp\App\u Data\Mailing.xml

Dim xml_doc As XmlDataDocument = New XmlDataDocument()
xml_doc.Load(Server.MapPath("~/App_Data/NAME AND PATH OF XML FILE.xml"))
Dim docNode As XmlNode = xml_doc.SelectSingleNode("MailListExportXML/MailListFiles/MailListFile[@MailList‌​ID=1]")
tbMMInputFile.Text = docNode.Attributes.GetNamedItem("MailListName").Value
xmlDoc = Nothing

您有一个默认名称空间,因此需要使用XmlNamespaceManager在XPath查询中指定名称空间:

参考文献:[]

更新:

糟糕的是,我遗漏了一件事,在前面的代码片段中,namespaceManager没有被使用。正如OP所确认的,前一段中的这一行:

Dim node As XmlNode = doc.SelectSingleNode("d:MailListExportXML/d:MailListFiles/d:MailListFile[@MailListID=1]")
应该是这样的,请注意namespaceManager作为SelectSingleNode函数的第二个参数:

Dim node As XmlNode = doc.SelectSingleNode("d:MailListExportXML/d:MailListFiles/d:MailListFile[@MailListID=1]", namespaceManager)

使用namespacemanager的示例解决了问题。

我已经编写了一些代码,但认为不应该将其发布为失败,并出现语法错误。下面是我正在使用的代码,它生成了一个关于空url的错误。Dim xml\u doc As XmlDataDocument=New XmlDataDocument xml\u doc.LoadtbMMInputFile.Text Dim docNode As XmlNode=xml\u doc.selectSingleNodeEmailListExportXML/MailListFiles/MailListFile[@MailListID=1]tbMMInputFile.Text=docNode.Attributes.GetNamedItemAllistName.ValueName空间管理器工作正常,但产生了一个关于无效令牌的错误。我不得不将doc.selectsinglenote更改为引用namespacemanager,它成功了。下面是修改后的行。。将节点设置为XmlNode=doc。选择SingleNoded:MailListExportXML/d:MailListFiles/d:MailListFile[@MailListID=1],名称空间管理器错误,忘记使用名称空间管理器。您是正确的,如果不将其作为SelectSingleNode的参数传递,则创建namespaceManager是无用的。更新了我的答案以澄清这一点。
Dim node As XmlNode = doc.SelectSingleNode("d:MailListExportXML/d:MailListFiles/d:MailListFile[@MailListID=1]", namespaceManager)