XML 基本操作

来源:互联网 发布:大数据科普宣传片 编辑:程序博客网 时间:2024/06/05 10:59
 XmlNode.Attributes 属性
描述:一个 XmlAttributeCollection,它包含该节点的属性。 如果节点为 XmlNodeType.Element 类型,则返回该节点的属性。否则,该属性将返回空引用(在 Visual Basic 中为 Nothing)。

示例:下面的示例向 XML 文档添加一个新属性。
Public Shared Sub Main()
Dim doc As New XmlDocument()
doc.LoadXml("<book xmlns:bk='urn:samples' bk:ISBN='1-861001-57-5'>" & _
"<title>Pride And Prejudice</title>" & _
"</book>")
Dim root As XmlNode = doc.FirstChild
'添加一个新的节点属性
Dim ns As String = root.GetNamespaceOfPrefix("bk")
Dim attr As XmlNode = doc.CreateNode(XmlNodeType.Attribute, "genre", ns)
attr.Value = "novel"
'将该新属性添加到文档中
root.Attributes.SetNamedItem(attr)
Console.WriteLine("Display the modified XML...")
doc.Save(Console.Out)
End Sub

===============================================

XmlNode.ChildNodes 属性

描 述:获取节点的所有子节点。
属性值:一个 XmlNodeList,它包含节点的所有子节点。如果没有子节点,该属性返回空 XmlNodeList。

示 例:下面的示例显示根元素的所有子节点。

Public Shared Sub Main()
Dim doc As New XmlDocument()
doc.LoadXml("<book ISBN='1-861001-57-5'>" & _
"<title>Pride And Prejudice</title>" & _
"<price>19.95</price>" & _
"</book>")
Dim root As XmlNode = doc.FirstChild
'Display the contents of the child nodes.
If root.HasChildNodes Then
Dim i As Integer
For i = 0 To root.ChildNodes.Count - 1
Console.WriteLine(root.ChildNodes(i).InnerText)
Next i
End If
End Sub

===============================================

XmlNode.FirstChild 属性

描述:获取节点的第一个子级。如果没有这样的节点,则返回 空引用(在 Visual Basic 中为 Nothing)。

示例:下面的示例显示标题元素。

Public Shared Sub Main()
Dim doc As New XmlDocument()
doc.LoadXml("<book ISBN='1-861001-57-5'>" & _
"<title>Pride And Prejudice</title>" & _
"<price>19.95</price>" & _
"</book>")
Dim root As XmlNode = doc.FirstChild
Console.WriteLine("Display the title element...")
Console.WriteLine(root.FirstChild.OuterXml)
End Sub 'Main

===============================================

XmlNode.HasChildNodes 属性

描述:获取一个值,该值指示节点是否有任何子节点。如果节点具有子节点,则为 true;否则为 false。

示例:下面的示例显示根元素的所有子节点。

Public Shared Sub Main()
Dim doc As New XmlDocument()
doc.LoadXml("<book ISBN='1-861001-57-5'>" & _
"<title>Pride And Prejudice</title>" & _
"<price>19.95</price>" & _
"</book>")
Dim root As XmlNode = doc.FirstChild
'Display the contents of the child nodes.
If root.HasChildNodes Then
Dim i As Integer
For i = 0 To root.ChildNodes.Count - 1
Console.WriteLine(root.ChildNodes(i).InnerText)
Next i
End If
End Sub 'Main

===============================================

XmlNode.InnerText 属性

描述:获取或设置节点及其所有子节点的串联值。
节点及其所有子节点的串联值。
备注: 设置此属性将用经过分析的给定字符串内容替换所有子节点。
对于叶节点,InnerText 与 Value 属性返回相同的内容。


示例:下面的示例比较 InnerText 和 InnerXml 属性。

public shared sub Main()

Dim doc as XmlDocument = new XmlDocument()
doc.LoadXml("<root>"& _
"<elem>some text<child/>more text</elem>" & _
"</root>")

Dim elem as XmlNode = doc.DocumentElement.FirstChild

' Note that InnerText does not include the markup.
Console.WriteLine("Display the InnerText of the element...")
Console.WriteLine( elem.InnerText )

' InnerXml includes the markup of the element.
Console.WriteLine("Display the InnerXml of the element...")
Console.WriteLine(elem.InnerXml)

' Set InnerText to a string that includes markup.
' The markup is escaped.
elem.InnerText = "Text containing <markup/> will have char(<) and char(>) escaped."
Console.WriteLine( elem.OuterXml )

' Set InnerXml to a string that includes markup.
' The markup is not escaped.
elem.InnerXml = "Text containing <markup/>."
Console.WriteLine( elem.OuterXml )
end sub


===============================================

XmlNode.InnerXml 属性

描述:获取或设置仅代表该节点的子节点的标记。

备注: 试图从一个不能具有子节点的节点(例如 Text 节点)设置该属性将引发异常。而设置 InnerXml 将用经过分析的给定字符串内容替换该节点的子节点。分析在当前命名空间上下文中完成。

===============================================

XmlNode.IsReadOnly 属性

描述:获取一个值,该值指示节点是否是只读的。如果节点是只读的,则为 true;否则为 false。

备注:只读节点是属性、特性或子节点都无法更改的节点。可从树中移除只读节点并将其插入其他位置。例如,Entity 节点始终是只读的。

===============================================

XmlNode.Item 属性

描述:获取指定的子元素。

重载列表:

名称 说明

XmlNode.Item (String) 获取具有指定 Name 的第一个子元素。

由 .NET Compact Framework 支持。
XmlNode.Item (String, String) 获取具有指定 LocalName 和 NamespaceURI 的第一个子元素。
由 .NET Compact Framework 支持。

------------------------------------
XmlNode.Item 属性 (String)

描述:获取具有指定 Name 的第一个子元素。

示例:下面的示例显示标题元素。

Public Shared Sub Main()
Dim doc As New XmlDocument()
doc.LoadXml("<book ISBN='1-861001-57-5'>" & _
"<title>Pride And Prejudice</title>" & _
"<price>19.95</price>" & _
"</book>")

Dim root As XmlNode = doc.FirstChild
Console.WriteLine("Display the title element...")
Console.WriteLine(root("title").OuterXml)
End Sub 'Main

------------------------------------

XmlNode.Item 属性 (String, String)

描述:获取具有指定 LocalName 和 NamespaceURI 的第一个子元素。

参数:
localname 元素的本地名称。
ns 元素的命名空间 URI。


===============================================

XmlNode.LastChild 属性

描述:获取节点的最后一个子级。 如果没有这样的节点,则返回 空引用(在 Visual Basic 中为 Nothing)。

示例:下面的示例显示价格元素。

Public Shared Sub Main()
Dim doc As New XmlDocument()
doc.LoadXml("<book ISBN='1-861001-57-5'>" & _
"<title>Pride And Prejudice</title>" & _
"<price>19.95</price>" & _
"</book>")
Dim root As XmlNode = doc.FirstChild
Console.WriteLine("Display the price element...")
Console.WriteLine(root.LastChild.OuterXml)
End Sub 'Main

===============================================

XmlNode.LocalName 属性

描述:当在派生类中被重写时,获取节点的本地名称。 如果该节点没有前缀,则 LocalName 与 Name 相同。

移除了前缀的节点的名称。例如,对于元素 <bk:book>,LocalName 是 book。 返回的名称取决于节点的 NodeType:

===============================================

XmlNode.NodeType 属性

描述:当在派生类中被重写时,获取当前节点的类型。 该属性从不返回 XmlNodeType EndElement、EndEntity 或 None。

===============================================

XmlNode.NextSibling 属性

描述:获取紧接在该节点之后的节点。下一个 XmlNode。如果没有下一个节点,则返回 空引用(在 Visual Basic 中为 Nothing)。

示例:下面的示例显示 XML 文档中的所有书。

public shared sub Main()

Dim doc as XmlDocument = new XmlDocument()
doc.Load("books.xml")

Dim currNode as XmlNode = doc.DocumentElement.FirstChild
Console.WriteLine("First book...")
Console.WriteLine(currNode.OuterXml)

Dim nextNode as XmlNode = currNode.NextSibling
Console.WriteLine(ControlChars.LF + "Second book...")
Console.WriteLine(nextNode.OuterXml)

end sub

===============================================

XmlNode.OuterXml 属性

描述:获取表示此节点及其所有子节点的标记。 包含此节点及其所有子节点的标记。OuterXml 不返回默认属性。

示例:下面的示例比较来自 InnerXml 和 OuterXml 属性的输出。

Public Shared Sub Main()
Dim doc As New XmlDocument()
doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5'>" & _
"<title>Pride And Prejudice</title>" & _
"</book>")
Dim root As XmlNode = doc.DocumentElement
' OuterXml includes the markup of current node.
Console.WriteLine("Display the OuterXml property...")
Console.WriteLine(root.OuterXml)
' InnerXml does not include the markup of the current node.
' As a result, the attributes are not displayed.
Console.WriteLine()
Console.WriteLine("Display the InnerXml property...")
Console.WriteLine(root.InnerXml)
End Sub 'Main

===============================================

XmlNode.OwnerDocument 属性

描述:获取该节点所属的 XmlDocument。 如果该节点是一个 XmlDocument(NodeType 等于 XmlNodeType.Document),则此属性返回空引用(在 Visual Basic 中为 Nothing)。 向当前节点添加节点时,请使用 OwnerDocument 属性返回的 XmlDocument 来创建节点。

示例:有关使用此属性的示例,请参见 OwnerDocument(在 XmlElement 类中)。


===============================================

XmlNode.ParentNode 属性

描述:获取该节点(对于可以具有父级的节点)的父级。为当前节点父级的 XmlNode。如果节点刚刚创建还未添加到树中,或如果已从树中移除了节点,则父级为 空引用(在 Visual Basic 中为 Nothing)。对于所有其他节点,返回的值取决于节点的 NodeType。下表描述 ParentNode 属性可能的返回值。

NodeType ----------------- ParentNode 的返回值
Attribute、Document
DocumentFragment 返回 空引用(在 Visual Basic 中为 Nothing);这些节点不具有父级。
Entity、Notation
CDATA 返回包含 CDATA 节的元素或实体引用。
Comment 返回包含注释的元素、实体引用、文档类型或文档。
DocumentType 返回文档节点。
Element 返回该元素的父节点。如果该元素是树中的根节点,则父级是文档节点。
EntityReference 返回包含该实体引用的元素、属性或实体引用。
ProcessingInstruction 返回包含该处理指令的文档、元素、文档类型或实体引用。
Text 返回包含该文本节点的父元素、属性或实体引用。
===============================================

XmlNode.Prefix 属性

描述:获取或设置该节点的命名空间前缀。 例如,对于元素 <bk:book>,Prefix 是 bk。如果没有前缀,则该属性返回 String.Empty。

当允许时,设置该属性将更改 Element 和 Attribute 节点上的 Name 属性,后者持有限定名。在不能具有前缀的节点类型上(例如 Text、Comment、EntityReference、CDATA、ProcessingInstruction、Document 和 DocumentFragment)设置该属性无效。更改已知具有默认值的属性的前缀不能产生具有该默认值的新属性,原前缀出现,这是因为命名空间 URI 和本地名称未更改。

===============================================

XmlNode.PreviousSibling 属性

描述:获取紧接在该节点之前的节点。前一个 XmlNode。如果前面没有节点,则返回 空引用(在 Visual Basic 中为 Nothing)。

示例:下面的示例显示 XML 文档中的所有书。

public shared sub Main()

Dim doc as XmlDocument = new XmlDocument()
doc.Load("books.xml")

Dim lastNode as XmlNode = doc.DocumentElement.LastChild
Console.WriteLine("Last book...")
Console.WriteLine(lastNode.OuterXml)

Dim prevNode as XmlNode = lastNode.PreviousSibling
Console.WriteLine(ControlChars.LF + "Previous book...")
Console.WriteLine(prevNode.OuterXml)
end sub