我能够读取XML文件并成功转换为Array。现在我想在数据中添加格式。出于这个原因,我已经在XML中添加和标记,但如果它有或任何其他格式标记,我将无法获得标记的值。
这是代码:
<?xml version="1.0" encoding="UTF-8"?>
<TestClass>
<TestObject>
<Site><b><i>Whatsapp</i></b></Site>
<URL>https://www.Whatsapp.com/ABC/</URL>
</TestObject>
<TestObject>
<Site>Facebook</Site>
<URL>https://www.facebook.com/XYZ/</URL>
</TestObject>
<TestObject>
<Site>Twitter</Site>
<URL>https://www.twitter.com/ABC/</URL>
</TestObject>
</TestClass>
代码:
Dim oXMLFile As Object
Dim XMLFileName As String
Dim Sites As Object
Dim URLs As Object
Set oXMLFile = CreateObject("Microsoft.XMLDOM")
XMLFileName = "C:\Users\abc\Desktop\Files\Test.xml"
oXMLFile.Load (XMLFileName)
Set Sites = oXMLFile.SelectNodes("TestClass/TestObject/Site/text()")
Set URLs = oXMLFile.SelectNodes("TestClass/TestObject/URL/text()")
//Sites get only `Facebook` and `Twitter`
如果我移除<b>
和<i>
,它会正常工作,我将获得所有3个元素的值。
请建议如何在从XML获取值时管理格式。
答案 0 :(得分:0)
不允许在XML-Textblock中使用<
或>
。你必须“掩盖”他们。最好将<
转换为<
,将>
转换为>
看看这个:https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references
问题的背景:
XML解析器读取文件的整个结构。每个标记(<
和>
中包含的单词)在内部tzree中创建一个新节点。如果要访问节点,只需沿树下行即可。
在您的示例中:如果您希望TestClass/TestObject/Site/text()
解析器首先创建一个这样的树:
TestClass
+--TestObject
| +--Site
| |+--b
| | +--i
| | +--text=Whatsapp
| +--URL
| +--text=https://www.Whatsapp.com/ABC/
+--TestObject
| +--Site
| | +--text=Facebook
| +--URL
| +--text=https://www.facebook.com/XYZ/
然后它跟随你的XPAth TestClass/TestObject/Site/
并取得节点
+--Site
| +--b
| +--i
| +--text=Whatsapp
此节点没有text
。所以它返回一个空字符串