【问题标题】:XDocument To Read MetaBase.xmlXDocument 读取 MetaBase.xml
【发布时间】:2012-04-13 14:45:14
【问题描述】:

由于某种原因,我今天早上放了一个大脑袋。

我无法从以下代码中恢复任何内容...它总是弹出 0,并且永远不会填充 _Qry,即使正确填充了 _MBXml(在调试期间悬停显示它)

_MetaBasePath += "IIS6-MetaBase.xml" '"metabase.xml"
_MBXml = XDocument.Load(_MetaBasePath, LoadOptions.PreserveWhitespace)
_Qry = (From n In _MBXml.<IIsWebServer>
       Select New Typing.MetaBase() With {
           .Binding = Common.IsNull(Of String)(n.@ServerBindings, String.Empty)
       }).ToList()
MsgBox(_Qry.Count)

这是 IIS 6 metaBase.xml 文件的示例...

<?xml version ="1.0"?>
<configuration xmlns="urn:microsoft-catalog:XML_Metabase_V64_0">
<IIsWebServer   Location ="/LM/W3SVC/1174460368"
    AuthFlags="0"
    SSLCertHash="8251cc2a9671150ac107aee3d78006b032f9bc36"
    SSLStoreName="MY"
    SecureBindings="184.106.185.111:443:"
    ServerAutoStart="TRUE"
    ServerBindings="184.106.185.111:80:beta.turbokits.com"
    ServerComment="TurboKits Beta"
>
</IIsWebServer>
</configurarion>

【问题讨论】:

  • 也尝试过使用 ... 和 .Elements("IIsWebServer")

标签: .net vb.net linq linq-to-xml vb.net-2010


【解决方案1】:

如果 metabase.xml 有默认命名空间声明(即xmlns="http://example.com/"),那么请确保您的 VB 代码有

Imports <xmlns="http://example.com">

在导入部分。当然,您需要确保将 http://example.com/ 调整为 XML 文档中使用的实际 URL。

如果您仍有问题,请向我们展示 XML 示例。

【讨论】:

  • 实际上...看起来它可能成功了:'code' Imports
  • 是的,XML 输入中的默认命名空间声明适用于根元素及其后代元素,并且使用 VB.NET 来处理 Imports 是正确的方法。作为替代方案,如果您不想依赖 VB.NET 编译器,您可以执行 Dim df As XNamespace = _MBXml.Root.Name.Namespace,然后使用查询方法 ElementsDescendants,例如_MBXml.Elements(df + "IIsWebServer").
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多