libxml-ruby 2.8.0 → 3.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/HISTORY +859 -775
- data/LICENSE +20 -20
- data/MANIFEST +166 -166
- data/README.rdoc +217 -184
- data/Rakefile +98 -78
- data/ext/libxml/extconf.rb +61 -116
- data/ext/libxml/libxml.c +80 -76
- data/ext/libxml/ruby_libxml.h +67 -75
- data/ext/libxml/ruby_xml.c +937 -893
- data/ext/libxml/ruby_xml.h +10 -10
- data/ext/libxml/ruby_xml_attr.c +333 -333
- data/ext/libxml/ruby_xml_attr.h +12 -12
- data/ext/libxml/ruby_xml_attr_decl.c +153 -153
- data/ext/libxml/ruby_xml_attr_decl.h +11 -11
- data/ext/libxml/ruby_xml_attributes.c +275 -275
- data/ext/libxml/ruby_xml_attributes.h +15 -15
- data/ext/libxml/ruby_xml_cbg.c +85 -85
- data/ext/libxml/ruby_xml_document.c +1123 -1147
- data/ext/libxml/ruby_xml_document.h +11 -11
- data/ext/libxml/ruby_xml_dtd.c +248 -268
- data/ext/libxml/ruby_xml_dtd.h +9 -9
- data/ext/libxml/ruby_xml_encoding.c +250 -260
- data/ext/libxml/ruby_xml_encoding.h +16 -19
- data/ext/libxml/ruby_xml_error.c +996 -996
- data/ext/libxml/ruby_xml_error.h +12 -12
- data/ext/libxml/ruby_xml_html_parser.c +89 -92
- data/ext/libxml/ruby_xml_html_parser.h +10 -10
- data/ext/libxml/ruby_xml_html_parser_context.c +337 -338
- data/ext/libxml/ruby_xml_html_parser_context.h +10 -10
- data/ext/libxml/ruby_xml_html_parser_options.c +46 -46
- data/ext/libxml/ruby_xml_html_parser_options.h +10 -10
- data/ext/libxml/ruby_xml_input_cbg.c +191 -191
- data/ext/libxml/ruby_xml_input_cbg.h +20 -20
- data/ext/libxml/ruby_xml_io.c +47 -50
- data/ext/libxml/ruby_xml_io.h +10 -10
- data/ext/libxml/ruby_xml_namespace.c +154 -153
- data/ext/libxml/ruby_xml_namespace.h +10 -10
- data/ext/libxml/ruby_xml_namespaces.c +293 -293
- data/ext/libxml/ruby_xml_namespaces.h +9 -9
- data/ext/libxml/ruby_xml_node.c +1406 -1452
- data/ext/libxml/ruby_xml_node.h +13 -11
- data/ext/libxml/ruby_xml_parser.c +91 -94
- data/ext/libxml/ruby_xml_parser.h +12 -12
- data/ext/libxml/ruby_xml_parser_context.c +999 -1001
- data/ext/libxml/ruby_xml_parser_context.h +10 -10
- data/ext/libxml/ruby_xml_parser_options.c +66 -66
- data/ext/libxml/ruby_xml_parser_options.h +12 -12
- data/ext/libxml/ruby_xml_reader.c +1239 -1228
- data/ext/libxml/ruby_xml_reader.h +17 -17
- data/ext/libxml/ruby_xml_relaxng.c +110 -111
- data/ext/libxml/ruby_xml_relaxng.h +10 -10
- data/ext/libxml/ruby_xml_sax2_handler.c +326 -328
- data/ext/libxml/ruby_xml_sax2_handler.h +10 -10
- data/ext/libxml/ruby_xml_sax_parser.c +116 -120
- data/ext/libxml/ruby_xml_sax_parser.h +10 -10
- data/ext/libxml/ruby_xml_schema.c +350 -301
- data/ext/libxml/ruby_xml_schema.h +806 -809
- data/ext/libxml/ruby_xml_schema_attribute.c +61 -109
- data/ext/libxml/ruby_xml_schema_attribute.h +15 -15
- data/ext/libxml/ruby_xml_schema_element.c +69 -94
- data/ext/libxml/ruby_xml_schema_element.h +14 -14
- data/ext/libxml/ruby_xml_schema_facet.c +46 -52
- data/ext/libxml/ruby_xml_schema_facet.h +13 -13
- data/ext/libxml/ruby_xml_schema_type.c +214 -259
- data/ext/libxml/ruby_xml_schema_type.h +9 -9
- data/ext/libxml/ruby_xml_version.h +9 -9
- data/ext/libxml/ruby_xml_writer.c +1133 -1137
- data/ext/libxml/ruby_xml_writer.h +10 -10
- data/ext/libxml/ruby_xml_xinclude.c +16 -16
- data/ext/libxml/ruby_xml_xinclude.h +11 -11
- data/ext/libxml/ruby_xml_xpath.c +194 -188
- data/ext/libxml/ruby_xml_xpath.h +13 -13
- data/ext/libxml/ruby_xml_xpath_context.c +360 -361
- data/ext/libxml/ruby_xml_xpath_context.h +9 -9
- data/ext/libxml/ruby_xml_xpath_expression.c +81 -81
- data/ext/libxml/ruby_xml_xpath_expression.h +10 -10
- data/ext/libxml/ruby_xml_xpath_object.c +338 -335
- data/ext/libxml/ruby_xml_xpath_object.h +17 -17
- data/ext/libxml/ruby_xml_xpointer.c +99 -99
- data/ext/libxml/ruby_xml_xpointer.h +11 -11
- data/ext/vc/libxml_ruby.sln +17 -15
- data/lib/libxml/node.rb +2 -78
- data/lib/libxml/parser.rb +0 -266
- data/lib/libxml/sax_parser.rb +0 -17
- data/lib/libxml/schema/attribute.rb +19 -19
- data/lib/libxml/schema/element.rb +19 -27
- data/lib/libxml/schema/type.rb +21 -29
- data/lib/libxml/schema.rb +47 -66
- data/lib/libxml-ruby.rb +30 -0
- data/lib/libxml.rb +3 -33
- data/libxml-ruby.gemspec +48 -44
- data/script/benchmark/depixelate +634 -634
- data/script/benchmark/hamlet.xml +9054 -9054
- data/script/benchmark/parsecount +170 -170
- data/script/benchmark/throughput +41 -41
- data/script/test +6 -6
- data/setup.rb +0 -1
- data/test/c14n/given/example-1.xml +14 -14
- data/test/c14n/given/example-2.xml +11 -11
- data/test/c14n/given/example-3.xml +18 -18
- data/test/c14n/given/example-4.xml +9 -9
- data/test/c14n/given/example-5.xml +12 -12
- data/test/c14n/given/example-6.xml +2 -2
- data/test/c14n/given/example-7.xml +11 -11
- data/test/c14n/given/example-8.xml +11 -11
- data/test/c14n/given/example-8.xpath +9 -9
- data/test/c14n/result/1-1-without-comments/example-1 +3 -3
- data/test/c14n/result/1-1-without-comments/example-2 +10 -10
- data/test/c14n/result/1-1-without-comments/example-3 +13 -13
- data/test/c14n/result/1-1-without-comments/example-4 +8 -8
- data/test/c14n/result/1-1-without-comments/example-5 +2 -2
- data/test/c14n/result/with-comments/example-1 +5 -5
- data/test/c14n/result/with-comments/example-2 +10 -10
- data/test/c14n/result/with-comments/example-3 +13 -13
- data/test/c14n/result/with-comments/example-4 +8 -8
- data/test/c14n/result/with-comments/example-5 +3 -3
- data/test/c14n/result/without-comments/example-1 +3 -3
- data/test/c14n/result/without-comments/example-2 +10 -10
- data/test/c14n/result/without-comments/example-3 +13 -13
- data/test/c14n/result/without-comments/example-4 +8 -8
- data/test/c14n/result/without-comments/example-5 +2 -2
- data/test/model/atom.xml +12 -12
- data/test/model/bands.iso-8859-1.xml +4 -4
- data/test/model/bands.utf-8.xml +4 -4
- data/test/model/bands.xml +4 -4
- data/test/model/books.xml +153 -153
- data/test/model/cwm_1_0.xml +11336 -0
- data/test/model/merge_bug_data.xml +58 -58
- data/test/model/ruby-lang.html +238 -238
- data/test/model/rubynet.xml +79 -79
- data/test/model/shiporder.rnc +28 -28
- data/test/model/shiporder.rng +86 -86
- data/test/model/shiporder.xml +22 -22
- data/test/model/shiporder.xsd +44 -40
- data/test/model/shiporder_bad.xsd +40 -0
- data/test/model/shiporder_import.xsd +45 -0
- data/test/model/soap.xml +27 -27
- data/test/model/xinclude.xml +4 -4
- data/test/{tc_attr.rb → test_attr.rb} +23 -25
- data/test/{tc_attr_decl.rb → test_attr_decl.rb} +13 -14
- data/test/{tc_attributes.rb → test_attributes.rb} +11 -18
- data/test/{tc_canonicalize.rb → test_canonicalize.rb} +36 -41
- data/test/test_deprecated_require.rb +12 -0
- data/test/{tc_document.rb → test_document.rb} +33 -27
- data/test/test_document_write.rb +146 -0
- data/test/{tc_dtd.rb → test_dtd.rb} +29 -29
- data/test/{tc_encoding.rb → test_encoding.rb} +129 -126
- data/test/{tc_encoding_sax.rb → test_encoding_sax.rb} +7 -6
- data/test/test_error.rb +178 -0
- data/test/test_helper.rb +4 -9
- data/test/test_html_parser.rb +162 -0
- data/test/test_html_parser_context.rb +23 -0
- data/test/test_namespace.rb +60 -0
- data/test/{tc_namespaces.rb → test_namespaces.rb} +34 -44
- data/test/{tc_node.rb → test_node.rb} +68 -47
- data/test/{tc_node_cdata.rb → test_node_cdata.rb} +12 -13
- data/test/{tc_node_comment.rb → test_node_comment.rb} +7 -8
- data/test/{tc_node_copy.rb → test_node_copy.rb} +4 -6
- data/test/{tc_node_edit.rb → test_node_edit.rb} +23 -41
- data/test/{tc_node_pi.rb → test_node_pi.rb} +37 -40
- data/test/{tc_node_text.rb → test_node_text.rb} +10 -12
- data/test/{tc_node_write.rb → test_node_write.rb} +18 -29
- data/test/test_node_xlink.rb +28 -0
- data/test/test_parser.rb +324 -0
- data/test/{tc_parser_context.rb → test_parser_context.rb} +42 -49
- data/test/{tc_properties.rb → test_properties.rb} +6 -7
- data/test/test_reader.rb +364 -0
- data/test/test_relaxng.rb +53 -0
- data/test/{tc_sax_parser.rb → test_sax_parser.rb} +44 -38
- data/test/test_schema.rb +231 -0
- data/test/test_suite.rb +38 -40
- data/test/{tc_traversal.rb → test_traversal.rb} +5 -6
- data/test/{tc_writer.rb → test_writer.rb} +468 -448
- data/test/{tc_xinclude.rb → test_xinclude.rb} +4 -5
- data/test/test_xml.rb +263 -0
- data/test/{tc_xpath.rb → test_xpath.rb} +31 -32
- data/test/{tc_xpath_context.rb → test_xpath_context.rb} +8 -9
- data/test/test_xpath_expression.rb +37 -0
- data/test/{tc_xpointer.rb → test_xpointer.rb} +16 -18
- metadata +122 -100
- data/lib/libxml/ns.rb +0 -22
- data/lib/libxml/properties.rb +0 -23
- data/lib/libxml/reader.rb +0 -29
- data/lib/libxml/xpath_object.rb +0 -16
- data/test/etc_doc_to_s.rb +0 -21
- data/test/ets_doc_file.rb +0 -17
- data/test/ets_doc_to_s.rb +0 -23
- data/test/ets_gpx.rb +0 -28
- data/test/ets_node_gc.rb +0 -23
- data/test/ets_test.xml +0 -2
- data/test/ets_tsr.rb +0 -11
- data/test/tc_deprecated_require.rb +0 -13
- data/test/tc_document_write.rb +0 -196
- data/test/tc_error.rb +0 -180
- data/test/tc_html_parser.rb +0 -153
- data/test/tc_html_parser_context.rb +0 -24
- data/test/tc_namespace.rb +0 -62
- data/test/tc_node_xlink.rb +0 -29
- data/test/tc_parser.rb +0 -381
- data/test/tc_reader.rb +0 -400
- data/test/tc_relaxng.rb +0 -54
- data/test/tc_schema.rb +0 -162
- data/test/tc_xml.rb +0 -226
- data/test/tc_xpath_expression.rb +0 -38
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
require_relative './test_helper'
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class TestNS < Minitest::Test
|
|
7
|
+
def setup
|
|
8
|
+
file = File.join(File.dirname(__FILE__), 'model/soap.xml')
|
|
9
|
+
@doc = LibXML::XML::Document.file(file)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def teardown
|
|
13
|
+
@doc = nil
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_create_ns
|
|
17
|
+
node = LibXML::XML::Node.new('foo')
|
|
18
|
+
ns = LibXML::XML::Namespace.new(node, 'my_namepace', 'http://www.mynamespace.com')
|
|
19
|
+
assert_equal(ns.prefix, 'my_namepace')
|
|
20
|
+
assert_equal(ns.href, 'http://www.mynamespace.com')
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_create_default_ns
|
|
24
|
+
node = LibXML::XML::Node.new('foo')
|
|
25
|
+
ns = LibXML::XML::Namespace.new(node, nil, 'http://www.mynamespace.com')
|
|
26
|
+
assert_nil(ns.prefix)
|
|
27
|
+
assert_equal(ns.href, 'http://www.mynamespace.com')
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_create_unbound_ns
|
|
31
|
+
error = assert_raises(TypeError) do
|
|
32
|
+
LibXML::XML::Namespace.new(nil, 'my_namepace', 'http://www.mynamespace.com')
|
|
33
|
+
end
|
|
34
|
+
assert_equal('wrong argument type nil (expected Data)', error.to_s)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_duplicate_ns
|
|
38
|
+
node = LibXML::XML::Node.new('foo')
|
|
39
|
+
LibXML::XML::Namespace.new(node, 'myname', 'http://www.mynamespace.com')
|
|
40
|
+
assert_raises(LibXML::XML::Error) do
|
|
41
|
+
LibXML::XML::Namespace.new(node, 'myname', 'http://www.mynamespace.com')
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_eql
|
|
46
|
+
node = LibXML::XML::Node.new('Envelope')
|
|
47
|
+
|
|
48
|
+
assert(node.namespaces.namespace.eql?(node.namespaces.namespace))
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_equal
|
|
52
|
+
node1 = LibXML::XML::Node.new('Envelope')
|
|
53
|
+
ns1 = LibXML::XML::Namespace.new(node1, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
|
|
54
|
+
|
|
55
|
+
node2 = LibXML::XML::Node.new('Envelope')
|
|
56
|
+
ns2 = LibXML::XML::Namespace.new(node2, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
|
|
57
|
+
|
|
58
|
+
assert(ns1 == ns2)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
require_relative './test_helper'
|
|
4
4
|
|
|
5
|
-
require 'test/unit'
|
|
6
5
|
|
|
7
|
-
class TestNamespaces < Test
|
|
6
|
+
class TestNamespaces < Minitest::Test
|
|
8
7
|
def setup
|
|
9
8
|
file = File.join(File.dirname(__FILE__), 'model/soap.xml')
|
|
10
|
-
@doc = XML::Document.file(file)
|
|
9
|
+
@doc = LibXML::XML::Document.file(file)
|
|
11
10
|
end
|
|
12
11
|
|
|
13
12
|
def teardown
|
|
@@ -29,62 +28,62 @@ class TestNamespaces < Test::Unit::TestCase
|
|
|
29
28
|
end
|
|
30
29
|
|
|
31
30
|
def test_set_namespace_node
|
|
32
|
-
node = XML::Node.new('Envelope')
|
|
31
|
+
node = LibXML::XML::Node.new('Envelope')
|
|
33
32
|
assert_equal('<Envelope/>', node.to_s)
|
|
34
33
|
|
|
35
|
-
ns = XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
|
|
34
|
+
ns = LibXML::XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
|
|
36
35
|
assert_equal("<Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
|
|
37
36
|
assert_nil(node.namespaces.namespace)
|
|
38
37
|
|
|
39
38
|
# Now put the node in the soap namespace
|
|
40
39
|
node.namespaces.namespace = ns
|
|
41
|
-
|
|
40
|
+
refute_nil(node.namespaces.namespace)
|
|
42
41
|
assert_equal("<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
|
|
43
42
|
end
|
|
44
43
|
|
|
45
44
|
def test_set_namespace_attribute
|
|
46
45
|
# Create node
|
|
47
|
-
node = XML::Node.new('Envelope')
|
|
46
|
+
node = LibXML::XML::Node.new('Envelope')
|
|
48
47
|
assert_equal('<Envelope/>', node.to_s)
|
|
49
48
|
|
|
50
49
|
# Create attribute
|
|
51
|
-
attr = XML::Attr.new(node, "encodingStyle", "http://www.w3.org/2001/12/soap-encoding")
|
|
50
|
+
attr = LibXML::XML::Attr.new(node, "encodingStyle", "http://www.w3.org/2001/12/soap-encoding")
|
|
52
51
|
assert_equal('<Envelope encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
|
|
53
52
|
node.to_s)
|
|
54
53
|
|
|
55
54
|
# Create namespace attribute
|
|
56
|
-
ns = XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
|
|
55
|
+
ns = LibXML::XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
|
|
57
56
|
assert_equal('<Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
|
|
58
57
|
node.to_s)
|
|
59
58
|
assert_nil(node.namespaces.namespace)
|
|
60
59
|
|
|
61
60
|
# Now put the node in the soap namespace
|
|
62
61
|
node.namespaces.namespace = ns
|
|
63
|
-
|
|
62
|
+
refute_nil(node.namespaces.namespace)
|
|
64
63
|
assert_equal('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
|
|
65
64
|
node.to_s)
|
|
66
65
|
|
|
67
66
|
# Now put the attribute in the soap namespace
|
|
68
67
|
attr.namespaces.namespace = ns
|
|
69
|
-
|
|
68
|
+
refute_nil(node.namespaces.namespace)
|
|
70
69
|
assert_equal('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"/>',
|
|
71
70
|
node.to_s)
|
|
72
71
|
end
|
|
73
72
|
|
|
74
73
|
def test_define_namespace
|
|
75
|
-
node = XML::Node.new('Envelope')
|
|
74
|
+
node = LibXML::XML::Node.new('Envelope')
|
|
76
75
|
assert_equal('<Envelope/>', node.to_s)
|
|
77
76
|
|
|
78
|
-
XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
|
|
77
|
+
LibXML::XML::Namespace.new(node, 'soap', 'http://schemas.xmlsoap.org/soap/envelope/')
|
|
79
78
|
assert_equal("<Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
|
|
80
79
|
assert_nil(node.namespaces.namespace)
|
|
81
80
|
end
|
|
82
81
|
|
|
83
82
|
def test_define_default_namespace
|
|
84
|
-
node = XML::Node.new('Envelope')
|
|
83
|
+
node = LibXML::XML::Node.new('Envelope')
|
|
85
84
|
assert_equal('<Envelope/>', node.to_s)
|
|
86
85
|
|
|
87
|
-
XML::Namespace.new(node, nil, 'http://schemas.xmlsoap.org/soap/envelope/')
|
|
86
|
+
LibXML::XML::Namespace.new(node, nil, 'http://schemas.xmlsoap.org/soap/envelope/')
|
|
88
87
|
assert_equal("<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\"/>", node.to_s)
|
|
89
88
|
# This seems wrong, but appears to be the way libxml works
|
|
90
89
|
assert_nil(node.namespaces.namespace)
|
|
@@ -98,56 +97,47 @@ class TestNamespaces < Test::Unit::TestCase
|
|
|
98
97
|
assert_equal(5, namespaces.length)
|
|
99
98
|
|
|
100
99
|
namespace = namespaces[0]
|
|
101
|
-
assert_instance_of(XML::Namespace, namespace)
|
|
102
|
-
|
|
100
|
+
assert_instance_of(LibXML::XML::Namespace, namespace)
|
|
101
|
+
assert_nil(namespace.prefix)
|
|
103
102
|
assert_equal('http://services.somewhere.com', namespace.href)
|
|
104
103
|
|
|
105
104
|
namespace = namespaces[1]
|
|
106
|
-
assert_instance_of(XML::Namespace, namespace)
|
|
105
|
+
assert_instance_of(LibXML::XML::Namespace, namespace)
|
|
107
106
|
assert_equal('ns1', namespace.prefix)
|
|
108
107
|
assert_equal('http://domain.somewhere.com', namespace.href)
|
|
109
108
|
|
|
110
109
|
namespace = namespaces[2]
|
|
111
|
-
assert_instance_of(XML::Namespace, namespace)
|
|
110
|
+
assert_instance_of(LibXML::XML::Namespace, namespace)
|
|
112
111
|
assert_equal('soap', namespace.prefix)
|
|
113
112
|
assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
|
|
114
113
|
|
|
115
114
|
namespace = namespaces[3]
|
|
116
|
-
assert_instance_of(XML::Namespace, namespace)
|
|
115
|
+
assert_instance_of(LibXML::XML::Namespace, namespace)
|
|
117
116
|
assert_equal('xsd', namespace.prefix)
|
|
118
117
|
assert_equal('http://www.w3.org/2001/XMLSchema', namespace.href)
|
|
119
118
|
|
|
120
119
|
namespace = namespaces[4]
|
|
121
|
-
assert_instance_of(XML::Namespace, namespace)
|
|
120
|
+
assert_instance_of(LibXML::XML::Namespace, namespace)
|
|
122
121
|
assert_equal('xsi', namespace.prefix)
|
|
123
122
|
assert_equal('http://www.w3.org/2001/XMLSchema-instance', namespace.href)
|
|
124
123
|
end
|
|
125
124
|
|
|
126
|
-
def test_namespaces
|
|
127
|
-
node = @doc.find_first('//ns1:IdAndName',
|
|
128
|
-
:ns1 => 'http://domain.somewhere.com')
|
|
129
|
-
|
|
130
|
-
node.namespaces.each do |namespace|
|
|
131
|
-
assert_instance_of(XML::Namespace, namespace)
|
|
132
|
-
end
|
|
133
|
-
end
|
|
134
|
-
|
|
135
125
|
def test_namespace_definitions
|
|
136
126
|
ns_defs = @doc.root.namespaces.definitions
|
|
137
127
|
assert_equal(3, ns_defs.size)
|
|
138
128
|
|
|
139
129
|
namespace = ns_defs[0]
|
|
140
|
-
assert_instance_of(XML::Namespace, namespace)
|
|
130
|
+
assert_instance_of(LibXML::XML::Namespace, namespace)
|
|
141
131
|
assert_equal('soap', namespace.prefix)
|
|
142
132
|
assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
|
|
143
133
|
|
|
144
134
|
namespace = ns_defs[1]
|
|
145
|
-
assert_instance_of(XML::Namespace, namespace)
|
|
135
|
+
assert_instance_of(LibXML::XML::Namespace, namespace)
|
|
146
136
|
assert_equal('xsd', namespace.prefix)
|
|
147
137
|
assert_equal('http://www.w3.org/2001/XMLSchema', namespace.href)
|
|
148
138
|
|
|
149
139
|
namespace = ns_defs[2]
|
|
150
|
-
assert_instance_of(XML::Namespace, namespace)
|
|
140
|
+
assert_instance_of(LibXML::XML::Namespace, namespace)
|
|
151
141
|
assert_equal('xsi', namespace.prefix)
|
|
152
142
|
assert_equal('http://www.w3.org/2001/XMLSchema-instance', namespace.href)
|
|
153
143
|
|
|
@@ -157,15 +147,15 @@ class TestNamespaces < Test::Unit::TestCase
|
|
|
157
147
|
assert_equal(1, ns_defs.size)
|
|
158
148
|
|
|
159
149
|
namespace = ns_defs[0]
|
|
160
|
-
assert_instance_of(XML::Namespace, namespace)
|
|
161
|
-
|
|
150
|
+
assert_instance_of(LibXML::XML::Namespace, namespace)
|
|
151
|
+
assert_nil(namespace.prefix)
|
|
162
152
|
assert_equal('http://services.somewhere.com', namespace.href)
|
|
163
153
|
end
|
|
164
154
|
|
|
165
155
|
def test_find_by_prefix
|
|
166
156
|
namespace = @doc.root.namespaces.find_by_prefix('soap')
|
|
167
157
|
|
|
168
|
-
assert_instance_of(XML::Namespace, namespace)
|
|
158
|
+
assert_instance_of(LibXML::XML::Namespace, namespace)
|
|
169
159
|
assert_equal('soap', namespace.prefix)
|
|
170
160
|
assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
|
|
171
161
|
end
|
|
@@ -178,8 +168,8 @@ class TestNamespaces < Test::Unit::TestCase
|
|
|
178
168
|
:ns1 => 'http://services.somewhere.com')
|
|
179
169
|
namespace = node.namespaces.find_by_prefix(nil)
|
|
180
170
|
|
|
181
|
-
assert_instance_of(XML::Namespace, namespace)
|
|
182
|
-
|
|
171
|
+
assert_instance_of(LibXML::XML::Namespace, namespace)
|
|
172
|
+
assert_nil(namespace.prefix)
|
|
183
173
|
assert_equal('http://services.somewhere.com', namespace.href)
|
|
184
174
|
end
|
|
185
175
|
|
|
@@ -189,22 +179,22 @@ class TestNamespaces < Test::Unit::TestCase
|
|
|
189
179
|
|
|
190
180
|
namespace = node.namespaces.find_by_href('http://schemas.xmlsoap.org/soap/envelope/')
|
|
191
181
|
|
|
192
|
-
assert_instance_of(XML::Namespace, namespace)
|
|
182
|
+
assert_instance_of(LibXML::XML::Namespace, namespace)
|
|
193
183
|
assert_equal('soap', namespace.prefix)
|
|
194
184
|
assert_equal('http://schemas.xmlsoap.org/soap/envelope/', namespace.href)
|
|
195
185
|
end
|
|
196
186
|
|
|
197
187
|
def test_default_namespace
|
|
198
|
-
doc = XML::Document.string('<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/>')
|
|
188
|
+
doc = LibXML::XML::Document.string('<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/>')
|
|
199
189
|
ns = doc.root.namespaces.default
|
|
200
190
|
assert_equal(ns.href, 'http://schemas.xmlsoap.org/soap/envelope/')
|
|
201
191
|
end
|
|
202
192
|
|
|
203
193
|
def test_default_prefix
|
|
204
|
-
doc = XML::Document.string('<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/>')
|
|
194
|
+
doc = LibXML::XML::Document.string('<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/>')
|
|
205
195
|
doc.root.namespaces.default_prefix = 'soap'
|
|
206
196
|
|
|
207
197
|
node = doc.root.find_first('/soap:Envelope')
|
|
208
|
-
|
|
198
|
+
refute_nil(node)
|
|
209
199
|
end
|
|
210
|
-
end
|
|
200
|
+
end
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
require 'test/unit'
|
|
3
|
+
require_relative './test_helper'
|
|
5
4
|
|
|
6
|
-
class TestNode < Test
|
|
5
|
+
class TestNode < Minitest::Test
|
|
7
6
|
def setup
|
|
8
7
|
@file_name = "model/bands.utf-8.xml"
|
|
9
8
|
|
|
10
9
|
# Strip spaces to make testing easier
|
|
11
|
-
XML.default_keep_blanks = false
|
|
10
|
+
LibXML::XML.default_keep_blanks = false
|
|
12
11
|
file = File.join(File.dirname(__FILE__), @file_name)
|
|
13
|
-
@doc = XML::Document.file(file)
|
|
12
|
+
@doc = LibXML::XML::Document.file(file)
|
|
14
13
|
end
|
|
15
14
|
|
|
16
15
|
def teardown
|
|
17
|
-
XML.default_keep_blanks = true
|
|
16
|
+
LibXML::XML.default_keep_blanks = true
|
|
18
17
|
@doc = nil
|
|
19
18
|
end
|
|
20
19
|
|
|
@@ -24,55 +23,51 @@ class TestNode < Test::Unit::TestCase
|
|
|
24
23
|
end
|
|
25
24
|
|
|
26
25
|
def test_doc_class
|
|
27
|
-
assert_instance_of(XML::Document, @doc)
|
|
26
|
+
assert_instance_of(LibXML::XML::Document, @doc)
|
|
28
27
|
end
|
|
29
28
|
|
|
30
29
|
def test_doc_node_type
|
|
31
|
-
assert_equal XML::Node::DOCUMENT_NODE, @doc.node_type
|
|
30
|
+
assert_equal LibXML::XML::Node::DOCUMENT_NODE, @doc.node_type
|
|
32
31
|
end
|
|
33
32
|
|
|
34
33
|
def test_root_class
|
|
35
|
-
assert_instance_of(XML::Node, @doc.root)
|
|
34
|
+
assert_instance_of(LibXML::XML::Node, @doc.root)
|
|
36
35
|
end
|
|
37
36
|
|
|
38
37
|
def test_root_node_type
|
|
39
|
-
assert_equal XML::Node::ELEMENT_NODE, @doc.root.node_type
|
|
38
|
+
assert_equal LibXML::XML::Node::ELEMENT_NODE, @doc.root.node_type
|
|
40
39
|
end
|
|
41
40
|
|
|
42
41
|
def test_node_class
|
|
43
42
|
for n in nodes
|
|
44
|
-
assert_instance_of(XML::Node, n)
|
|
43
|
+
assert_instance_of(LibXML::XML::Node, n)
|
|
45
44
|
end
|
|
46
45
|
end
|
|
47
46
|
|
|
48
47
|
def test_context
|
|
49
48
|
node = @doc.root
|
|
50
49
|
context = node.context
|
|
51
|
-
assert_instance_of(XML::XPath::Context, context)
|
|
50
|
+
assert_instance_of(LibXML::XML::XPath::Context, context)
|
|
52
51
|
end
|
|
53
52
|
|
|
54
53
|
def test_find
|
|
55
|
-
assert_instance_of(XML::XPath::Object, self.nodes)
|
|
54
|
+
assert_instance_of(LibXML::XML::XPath::Object, self.nodes)
|
|
56
55
|
end
|
|
57
56
|
|
|
58
57
|
def test_node_child_get
|
|
59
58
|
assert_instance_of(TrueClass, @doc.root.child?)
|
|
60
|
-
assert_instance_of(XML::Node, @doc.root.child)
|
|
59
|
+
assert_instance_of(LibXML::XML::Node, @doc.root.child)
|
|
61
60
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
assert_equal("m\u00F6tley_cr\u00FCe", @doc.root.child.name)
|
|
65
|
-
else
|
|
66
|
-
assert_equal("m\303\266tley_cr\303\274e", @doc.root.child.name)
|
|
67
|
-
end
|
|
61
|
+
assert_equal(Encoding::UTF_8, @doc.root.child.name.encoding)
|
|
62
|
+
assert_equal("m\u00F6tley_cr\u00FCe", @doc.root.child.name)
|
|
68
63
|
end
|
|
69
64
|
|
|
70
65
|
def test_node_doc
|
|
71
66
|
for n in nodes
|
|
72
|
-
assert_instance_of(XML::Document, n.doc) if n.document?
|
|
67
|
+
assert_instance_of(LibXML::XML::Document, n.doc) if n.document?
|
|
73
68
|
end
|
|
74
69
|
end
|
|
75
|
-
|
|
70
|
+
|
|
76
71
|
def test_name
|
|
77
72
|
node = @doc.root.children.last
|
|
78
73
|
assert_equal("iron_maiden", node.name)
|
|
@@ -81,7 +76,7 @@ class TestNode < Test::Unit::TestCase
|
|
|
81
76
|
def test_node_find
|
|
82
77
|
nodes = @doc.root.find('./fixnum')
|
|
83
78
|
for node in nodes
|
|
84
|
-
assert_instance_of(XML::Node, node)
|
|
79
|
+
assert_instance_of(LibXML::XML::Node, node)
|
|
85
80
|
end
|
|
86
81
|
end
|
|
87
82
|
|
|
@@ -89,19 +84,35 @@ class TestNode < Test::Unit::TestCase
|
|
|
89
84
|
node_a = @doc.find_first('*[@country]')
|
|
90
85
|
node_b = @doc.root.child
|
|
91
86
|
|
|
87
|
+
# On the ruby side these are different objects
|
|
88
|
+
refute(node_a.equal?(node_b))
|
|
89
|
+
|
|
90
|
+
# But they are the same underlying libxml node so specify they are equal
|
|
92
91
|
assert(node_a == node_b)
|
|
93
92
|
assert(node_a.eql?(node_b))
|
|
94
|
-
assert(node_a.equal?(node_b))
|
|
95
93
|
|
|
96
94
|
file = File.join(File.dirname(__FILE__), @file_name)
|
|
97
|
-
doc2 = XML::Document.file(file)
|
|
95
|
+
doc2 = LibXML::XML::Document.file(file)
|
|
98
96
|
|
|
99
97
|
node_a2 = doc2.find_first('*[@country]')
|
|
100
98
|
|
|
99
|
+
refute(node_a == node_a2)
|
|
100
|
+
refute(node_a.eql?(node_a2))
|
|
101
101
|
assert_equal(node_a.to_s, node_a2.to_s)
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
102
|
+
refute(node_a.equal?(node_a2))
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def test_equality_2
|
|
106
|
+
parent = LibXML::XML::Node.new('parent')
|
|
107
|
+
child = LibXML::XML::Node.new('child')
|
|
108
|
+
parent << child
|
|
109
|
+
|
|
110
|
+
node_a = child.parent
|
|
111
|
+
node_b = child.parent
|
|
112
|
+
# In this case the nodes are equal - the parent being the root
|
|
113
|
+
assert(node_a.equal?(node_b))
|
|
114
|
+
assert(node_a == node_b)
|
|
115
|
+
assert(node_a.eql?(node_b))
|
|
105
116
|
end
|
|
106
117
|
|
|
107
118
|
def test_equality_nil
|
|
@@ -112,7 +123,7 @@ class TestNode < Test::Unit::TestCase
|
|
|
112
123
|
def test_equality_wrong_type
|
|
113
124
|
node = @doc.root
|
|
114
125
|
|
|
115
|
-
|
|
126
|
+
assert_raises(TypeError) do
|
|
116
127
|
assert(node != 'abc')
|
|
117
128
|
end
|
|
118
129
|
end
|
|
@@ -124,20 +135,20 @@ class TestNode < Test::Unit::TestCase
|
|
|
124
135
|
end
|
|
125
136
|
|
|
126
137
|
def test_base
|
|
127
|
-
doc = XML::Parser.string('<person />').parse
|
|
138
|
+
doc = LibXML::XML::Parser.string('<person />').parse
|
|
128
139
|
assert_nil(doc.root.base_uri)
|
|
129
140
|
end
|
|
130
141
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
142
|
+
# We use the same facility that libXSLT does here to disable output escaping.
|
|
143
|
+
# This lets you specify that the node's content should be rendered unaltered
|
|
144
|
+
# whenever it is being output. This is useful for things like <script> and
|
|
145
|
+
# <style> nodes in HTML documents if you don't want to be forced to wrap them
|
|
146
|
+
# in CDATA nodes. Or if you are sanitizing existing HTML documents and want
|
|
147
|
+
# to preserve the content of any of the text nodes.
|
|
148
|
+
#
|
|
149
|
+
def test_output_escaping
|
|
139
150
|
text = '<bad-script>if (a < b || b > c) { return "text"; }<stop/>return ">>>snip<<<";</bad-script>'
|
|
140
|
-
node = XML::Parser.string(text).parse.root
|
|
151
|
+
node = LibXML::XML::Parser.string(text).parse.root
|
|
141
152
|
assert_equal text, node.to_s
|
|
142
153
|
|
|
143
154
|
text_noenc = '<bad-script>if (a < b || b > c) { return "text"; }<stop/>return ">>>snip<<<";</bad-script>'
|
|
@@ -154,10 +165,10 @@ class TestNode < Test::Unit::TestCase
|
|
|
154
165
|
assert_equal text, node.to_s
|
|
155
166
|
end
|
|
156
167
|
|
|
157
|
-
|
|
158
|
-
|
|
168
|
+
# Just a sanity check for output escaping.
|
|
169
|
+
def test_output_escaping_sanity
|
|
159
170
|
text = '<bad-script>if (a < b || b > c) { return "text"; }<stop/>return ">>>snip<<<";</bad-script>'
|
|
160
|
-
node = XML::Parser.string(text).parse.root
|
|
171
|
+
node = LibXML::XML::Parser.string(text).parse.root
|
|
161
172
|
affected = node.find('//text()')
|
|
162
173
|
|
|
163
174
|
check_escaping = lambda do |flag|
|
|
@@ -190,25 +201,35 @@ class TestNode < Test::Unit::TestCase
|
|
|
190
201
|
node = @doc.root
|
|
191
202
|
|
|
192
203
|
node.space_preserve = false
|
|
193
|
-
assert_equal XML::Node::SPACE_DEFAULT, node.space_preserve
|
|
204
|
+
assert_equal LibXML::XML::Node::SPACE_DEFAULT, node.space_preserve
|
|
194
205
|
|
|
195
206
|
node.space_preserve = true
|
|
196
|
-
assert_equal XML::Node::SPACE_PRESERVE, node.space_preserve
|
|
207
|
+
assert_equal LibXML::XML::Node::SPACE_PRESERVE, node.space_preserve
|
|
197
208
|
end
|
|
198
209
|
|
|
199
210
|
def test_empty
|
|
200
211
|
text = '<name> </name>'
|
|
201
|
-
doc = XML::Parser.string(text).parse
|
|
212
|
+
doc = LibXML::XML::Parser.string(text).parse
|
|
202
213
|
|
|
203
214
|
node = doc.root
|
|
204
215
|
assert(!node.empty?)
|
|
205
|
-
|
|
216
|
+
|
|
206
217
|
text_node = node.first
|
|
207
218
|
assert(text_node.empty?)
|
|
208
219
|
end
|
|
209
220
|
|
|
221
|
+
def test_save_no_empty_tags
|
|
222
|
+
node = LibXML::XML::Node.new('test')
|
|
223
|
+
assert_equal '<test/>', node.to_s
|
|
224
|
+
|
|
225
|
+
LibXML::XML.default_save_no_empty_tags = true
|
|
226
|
+
assert_equal '<test></test>', node.to_s
|
|
227
|
+
|
|
228
|
+
LibXML::XML.default_save_no_empty_tags = false
|
|
229
|
+
end
|
|
230
|
+
|
|
210
231
|
def test_set_content
|
|
211
|
-
node = XML::Node.new('test')
|
|
232
|
+
node = LibXML::XML::Node.new('test')
|
|
212
233
|
node.content = "unescaped & string"
|
|
213
234
|
assert_equal("unescaped & string", node.content)
|
|
214
235
|
assert_equal("<test>unescaped & string</test>", node.to_s)
|
|
@@ -1,50 +1,49 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
require 'test/unit'
|
|
3
|
+
require_relative './test_helper'
|
|
5
4
|
|
|
6
|
-
class CDataCommentTest < Test
|
|
5
|
+
class CDataCommentTest < Minitest::Test
|
|
7
6
|
def setup
|
|
8
|
-
xp = XML::Parser.string('<root></root>')
|
|
7
|
+
xp = LibXML::XML::Parser.string('<root></root>')
|
|
9
8
|
@doc = xp.parse
|
|
10
|
-
assert_instance_of(XML::Document, @doc)
|
|
9
|
+
assert_instance_of(LibXML::XML::Document, @doc)
|
|
11
10
|
@root = @doc.root
|
|
12
11
|
end
|
|
13
12
|
|
|
14
13
|
def test_node_type
|
|
15
|
-
cnode = XML::Node.new_cdata('test cdata')
|
|
16
|
-
assert_equal(XML::Node::CDATA_SECTION_NODE, cnode.node_type)
|
|
14
|
+
cnode = LibXML::XML::Node.new_cdata('test cdata')
|
|
15
|
+
assert_equal(LibXML::XML::Node::CDATA_SECTION_NODE, cnode.node_type)
|
|
17
16
|
end
|
|
18
17
|
|
|
19
18
|
def test_add_cdata
|
|
20
|
-
@root << XML::Node.new_cdata('mycdata')
|
|
19
|
+
@root << LibXML::XML::Node.new_cdata('mycdata')
|
|
21
20
|
assert_equal '<root><![CDATA[mycdata]]></root>',
|
|
22
21
|
@root.to_s.gsub(/\n\s*/,'')
|
|
23
22
|
end
|
|
24
23
|
|
|
25
24
|
def test_add_cdata_2
|
|
26
|
-
@root << XML::Node.new_cdata('mycdata')
|
|
25
|
+
@root << LibXML::XML::Node.new_cdata('mycdata')
|
|
27
26
|
assert_equal 'cdata',
|
|
28
27
|
@root.child.node_type_name
|
|
29
28
|
end
|
|
30
29
|
|
|
31
30
|
def test_add_cdata_3
|
|
32
|
-
@root << el = XML::Node.new_cdata('mycdata')
|
|
31
|
+
@root << el = LibXML::XML::Node.new_cdata('mycdata')
|
|
33
32
|
el << "_this_is_added"
|
|
34
33
|
assert_equal '<root><![CDATA[mycdata_this_is_added]]></root>',
|
|
35
34
|
@root.to_s.gsub(/\n\s*/,'')
|
|
36
35
|
end
|
|
37
36
|
|
|
38
37
|
def test_attributes
|
|
39
|
-
cnode = XML::Node.new_cdata('test cdata')
|
|
38
|
+
cnode = LibXML::XML::Node.new_cdata('test cdata')
|
|
40
39
|
assert_equal(0, cnode.attributes.length)
|
|
41
40
|
end
|
|
42
41
|
|
|
43
42
|
def test_set_cdata_attribute
|
|
44
|
-
cnode = XML::Node.new_cdata('test cdata')
|
|
43
|
+
cnode = LibXML::XML::Node.new_cdata('test cdata')
|
|
45
44
|
|
|
46
45
|
# Can't create attributes on non-element nodes
|
|
47
|
-
|
|
46
|
+
assert_raises(ArgumentError) do
|
|
48
47
|
cnode['attr'] = '123'
|
|
49
48
|
end
|
|
50
49
|
end
|
|
@@ -1,31 +1,30 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
require_relative './test_helper'
|
|
4
4
|
|
|
5
|
-
require 'test/unit'
|
|
6
5
|
|
|
7
|
-
class NodeCommentTest < Test
|
|
6
|
+
class NodeCommentTest < Minitest::Test
|
|
8
7
|
def setup
|
|
9
|
-
xp = XML::Parser.string('<root></root>')
|
|
8
|
+
xp = LibXML::XML::Parser.string('<root></root>')
|
|
10
9
|
@doc = xp.parse
|
|
11
|
-
assert_instance_of(XML::Document, @doc)
|
|
10
|
+
assert_instance_of(LibXML::XML::Document, @doc)
|
|
12
11
|
@root = @doc.root
|
|
13
12
|
end
|
|
14
13
|
|
|
15
14
|
def test_libxml_node_add_comment_01
|
|
16
|
-
@root << XML::Node.new_comment('mycomment')
|
|
15
|
+
@root << LibXML::XML::Node.new_comment('mycomment')
|
|
17
16
|
assert_equal '<root><!--mycomment--></root>',
|
|
18
17
|
@root.to_s.gsub(/\n\s*/,'')
|
|
19
18
|
end
|
|
20
19
|
|
|
21
20
|
def test_libxml_node_add_comment_02
|
|
22
|
-
@root << XML::Node.new_comment('mycomment')
|
|
21
|
+
@root << LibXML::XML::Node.new_comment('mycomment')
|
|
23
22
|
assert_equal 'comment',
|
|
24
23
|
@root.child.node_type_name
|
|
25
24
|
end
|
|
26
25
|
|
|
27
26
|
def test_libxml_node_add_comment_03
|
|
28
|
-
@root << el = XML::Node.new_comment('mycomment')
|
|
27
|
+
@root << el = LibXML::XML::Node.new_comment('mycomment')
|
|
29
28
|
el << "_this_is_added"
|
|
30
29
|
assert_equal '<root><!--mycomment_this_is_added--></root>',
|
|
31
30
|
@root.to_s.gsub(/\n\s*/,'')
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
# encoding: UTF-8
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
require 'test/unit'
|
|
3
|
+
require_relative './test_helper'
|
|
5
4
|
|
|
6
5
|
# see mailing list archive
|
|
7
6
|
# [libxml-devel] Segmentation fault when add the cloned/copied node
|
|
8
7
|
# 2007/11/27 20:51
|
|
9
8
|
|
|
10
|
-
class TestNodeCopy < Test
|
|
9
|
+
class TestNodeCopy < Minitest::Test
|
|
11
10
|
def setup
|
|
12
11
|
str = <<-STR
|
|
13
12
|
<html><body>
|
|
@@ -16,7 +15,7 @@ class TestNodeCopy < Test::Unit::TestCase
|
|
|
16
15
|
</body></html>
|
|
17
16
|
STR
|
|
18
17
|
|
|
19
|
-
doc = XML::Parser.string(str).parse
|
|
18
|
+
doc = LibXML::XML::Parser.string(str).parse
|
|
20
19
|
|
|
21
20
|
xpath = "//div"
|
|
22
21
|
@div1 = doc.find(xpath).to_a[0]
|
|
@@ -38,5 +37,4 @@ class TestNodeCopy < Test::Unit::TestCase
|
|
|
38
37
|
end
|
|
39
38
|
assert @div1.to_s =~ /foo/
|
|
40
39
|
end
|
|
41
|
-
|
|
42
|
-
end # TC_XML_Node_Copy
|
|
40
|
+
end
|