xmlns 属性不允许我解析
xmlns attribute won't let me parse
过去一个小时我一直在尝试解析这个 XML 文件
<?xml version="1.0"?>
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1">
<name>MEDO PUB</name>
<SSIDConfig>
<SSID>
<hex>4D45444F20505542</hex>
<name>MEDO PUB</name>
</SSID>
</SSIDConfig>
<connectionType>ESS</connectionType>
<connectionMode>manual</connectionMode>
<MSM>
<security>
<authEncryption>
<authentication>WPA2PSK</authentication>
<encryption>AES</encryption>
<useOneX>false</useOneX>
</authEncryption>
<sharedKey>
<keyType>passPhrase</keyType>
<protected>true</protected>
<keyMaterial>someReallyLongString</keyMaterial>
</sharedKey>
</security>
</MSM>
</WLANProfile>
但我一直收到错误。这是保存的 Wi-Fi 配置文件,我使用 Managed Wifi API 导出了 XML 文件。后来想从XML文件中解析读取一些数据。我做不到。认输后,除了修改XML文件外,别无他法。所以我尝试解析
<?xml version="1.0"?>
<WLANProfile>
<name>MEDO PUB</name>
</WLANProfile>
它奏效了。 xmlns="http://www.microsoft.com/networking/WLAN/profile/v1"
造成了麻烦。这是为什么?
我将生成 XML 并即时从中读取,因此我无法手动打开并从 XML 文件中删除该部分。我该如何解决这个问题?
使用:
Visual C# 2010 Express(非一体化,单独安装)
Windows 8.1 专业版 x64
XmlDocument doc = new XmlDocument();
doc.Load("c:/key.xml");
XmlNode node = doc.DocumentElement.SelectSingleNode("//WLANProfile/name");
XMLOutput.Text = node.InnerText;
xmlns="...."
是 默认命名空间 (无前缀命名空间声明)。请注意,后代元素继承祖先默认命名空间 隐式 ,除非另有说明。这意味着,在这个特定的 XML 中, 所有 元素都在默认命名空间中。
对于使用XPath的命名空间中的select元素,您需要先注册指向相应命名空间的前缀,然后在您的XPath中正确使用注册的前缀:
XmlDocument doc = new XmlDocument();
doc.Load("c:/key.xml");
var nsManager = new XmlNamespaceManager(doc.NameTable);
nsManager.Add("d", "http://www.microsoft.com/networking/WLAN/profile/v1");
XmlNode node = doc.DocumentElement.SelectSingleNode("//d:WLANProfile/d:name", nsManager);
XMLOutput.Text = node.InnerText;
过去一个小时我一直在尝试解析这个 XML 文件
<?xml version="1.0"?>
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1">
<name>MEDO PUB</name>
<SSIDConfig>
<SSID>
<hex>4D45444F20505542</hex>
<name>MEDO PUB</name>
</SSID>
</SSIDConfig>
<connectionType>ESS</connectionType>
<connectionMode>manual</connectionMode>
<MSM>
<security>
<authEncryption>
<authentication>WPA2PSK</authentication>
<encryption>AES</encryption>
<useOneX>false</useOneX>
</authEncryption>
<sharedKey>
<keyType>passPhrase</keyType>
<protected>true</protected>
<keyMaterial>someReallyLongString</keyMaterial>
</sharedKey>
</security>
</MSM>
</WLANProfile>
但我一直收到错误。这是保存的 Wi-Fi 配置文件,我使用 Managed Wifi API 导出了 XML 文件。后来想从XML文件中解析读取一些数据。我做不到。认输后,除了修改XML文件外,别无他法。所以我尝试解析
<?xml version="1.0"?>
<WLANProfile>
<name>MEDO PUB</name>
</WLANProfile>
它奏效了。 xmlns="http://www.microsoft.com/networking/WLAN/profile/v1"
造成了麻烦。这是为什么?
我将生成 XML 并即时从中读取,因此我无法手动打开并从 XML 文件中删除该部分。我该如何解决这个问题?
使用:
Visual C# 2010 Express(非一体化,单独安装)
Windows 8.1 专业版 x64
XmlDocument doc = new XmlDocument();
doc.Load("c:/key.xml");
XmlNode node = doc.DocumentElement.SelectSingleNode("//WLANProfile/name");
XMLOutput.Text = node.InnerText;
xmlns="...."
是 默认命名空间 (无前缀命名空间声明)。请注意,后代元素继承祖先默认命名空间 隐式 ,除非另有说明。这意味着,在这个特定的 XML 中, 所有 元素都在默认命名空间中。
对于使用XPath的命名空间中的select元素,您需要先注册指向相应命名空间的前缀,然后在您的XPath中正确使用注册的前缀:
XmlDocument doc = new XmlDocument();
doc.Load("c:/key.xml");
var nsManager = new XmlNamespaceManager(doc.NameTable);
nsManager.Add("d", "http://www.microsoft.com/networking/WLAN/profile/v1");
XmlNode node = doc.DocumentElement.SelectSingleNode("//d:WLANProfile/d:name", nsManager);
XMLOutput.Text = node.InnerText;