diff --git a/.github/workflows/analyzers.yaml b/.github/workflows/analyzers.yaml
index fbdbd31..f8f7ef5 100644
--- a/.github/workflows/analyzers.yaml
+++ b/.github/workflows/analyzers.yaml
@@ -7,7 +7,7 @@ jobs:
strategy:
matrix:
operating-system: [ubuntu-latest]
- php-versions: [ '8.3', '8.4', '8.5' ]
+ php-versions: [ '8.4', '8.5' ]
composer-options: [ '--ignore-platform-req=php+' ]
fail-fast: false
name: PHP ${{ matrix.php-versions }} @ ${{ matrix.operating-system }}
diff --git a/.github/workflows/code-style.yaml b/.github/workflows/code-style.yaml
index 59d5362..d05c7ee 100644
--- a/.github/workflows/code-style.yaml
+++ b/.github/workflows/code-style.yaml
@@ -7,7 +7,7 @@ jobs:
strategy:
matrix:
operating-system: [ubuntu-latest]
- php-versions: [ '8.3', '8.4', '8.5' ]
+ php-versions: [ '8.4', '8.5' ]
composer-options: [ '--ignore-platform-req=php+' ]
fail-fast: false
name: PHP ${{ matrix.php-versions }} @ ${{ matrix.operating-system }}
diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index f8cde3d..ec74651 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -7,7 +7,7 @@ jobs:
strategy:
matrix:
operating-system: [ubuntu-latest]
- php-versions: [ '8.3', '8.4', '8.5' ]
+ php-versions: [ '8.4', '8.5' ]
composer-options: [ '--ignore-platform-req=php+' ]
dependency-preference: ['current', 'lowest', 'stable']
fail-fast: false
diff --git a/composer.json b/composer.json
index 37023f1..c3a4c07 100644
--- a/composer.json
+++ b/composer.json
@@ -21,14 +21,25 @@
}
],
"require": {
- "php": "~8.3.0 || ~8.4.0 || ~8.5.0",
- "php-standard-library/php-standard-library": "^3.0 || ^4.0 || ^5.0 || ^6.0",
+ "php": "~8.4.0 || ~8.5.0",
+ "php-standard-library/collection": "^6.1",
+ "php-standard-library/dict": "^6.1",
+ "php-standard-library/encoding": "^6.1",
+ "php-standard-library/foundation": "^6.1",
+ "php-standard-library/fun": "^6.1",
+ "php-standard-library/iter": "^6.1",
+ "php-standard-library/option": "^6.1",
+ "php-standard-library/regex": "^6.1",
+ "php-standard-library/result": "^6.1",
+ "php-standard-library/str": "^6.1",
+ "php-standard-library/type": "^6.1",
+ "php-standard-library/vec": "^6.1",
"veewee/reflecta": "~0.16",
- "veewee/xml": "^3.6",
- "php-soap/engine": "^2.19",
- "php-soap/wsdl": "^1.18",
- "php-soap/xml": "^1.9",
- "php-soap/wsdl-reader": "^0.31"
+ "veewee/xml": "^4.10",
+ "php-soap/engine": "^2.20",
+ "php-soap/wsdl": "^1.19",
+ "php-soap/xml": "^1.10",
+ "php-soap/wsdl-reader": "^0.32"
},
"require-dev": {
"vimeo/psalm": "~6.13",
@@ -36,8 +47,8 @@
"php-cs-fixer/shim": "~3.88",
"symfony/var-dumper": "^7.0 || ^6.4",
"php-standard-library/psalm-plugin": "^2.3",
- "php-soap/engine-integration-tests": "^1.10",
- "php-soap/psr18-transport": "^1.8",
+ "php-soap/engine-integration-tests": "^1.12",
+ "php-soap/psr18-transport": "^2.0",
"guzzlehttp/guzzle": "^7.8",
"phpbench/phpbench": "^1.6"
},
diff --git a/examples/encoders/simpleType/anyXml.php b/examples/encoders/simpleType/anyXml.php
index 938d880..3b0f7bf 100644
--- a/examples/encoders/simpleType/anyXml.php
+++ b/examples/encoders/simpleType/anyXml.php
@@ -36,7 +36,7 @@ public function iso(Context $context): Iso
$targetElementName = $context->type->getXmlTargetNodeName();
return new Iso(
to: static fn (array $data): string => document_encode([$targetElementName => $data])
- ->manipulate(static fn (\DOMDocument $document) => $document->documentElement->setAttributeNS(
+ ->manipulate(static fn (\Dom\XMLDocument $document) => $document->documentElement->setAttributeNS(
VeeWee\Xml\Xmlns\Xmlns::xsi()->value(),
'xsi:type',
'custom:type'
diff --git a/psalm.xml b/psalm.xml
index 7a494c8..b0f130c 100644
--- a/psalm.xml
+++ b/psalm.xml
@@ -8,6 +8,7 @@
findUnusedBaselineEntry="true"
findUnusedCode="false"
ensureOverrideAttribute="false"
+ phpVersion="8.4"
>
@@ -15,6 +16,9 @@
+
+
+
diff --git a/src/Encoder/SoapEnc/ApacheMapEncoder.php b/src/Encoder/SoapEnc/ApacheMapEncoder.php
index 26b2676..1b9ad6a 100644
--- a/src/Encoder/SoapEnc/ApacheMapEncoder.php
+++ b/src/Encoder/SoapEnc/ApacheMapEncoder.php
@@ -4,7 +4,7 @@
namespace Soap\Encoding\Encoder\SoapEnc;
use Closure;
-use DOMElement;
+use Dom\Element as DomElement;
use Soap\Encoding\Encoder\Context;
use Soap\Encoding\Encoder\SimpleType\ScalarTypeEncoder;
use Soap\Encoding\Encoder\XmlEncoder;
@@ -84,7 +84,7 @@ private function decodeArray(Context $context, Element $value): array
$xpath = $value->document()->xpath();
return readChildren($element)->reduce(
- static function (array $map, DOMElement $item) use ($context, $xpath): array {
+ static function (array $map, DomElement $item) use ($context, $xpath): array {
$key = $xpath->evaluate('string(./key)', string(), $item);
/** @psalm-var mixed $value */
$value = ElementValueReader::forEncoder(
diff --git a/src/Encoder/SoapEnc/SoapArrayEncoder.php b/src/Encoder/SoapEnc/SoapArrayEncoder.php
index c002992..c6c8414 100644
--- a/src/Encoder/SoapEnc/SoapArrayEncoder.php
+++ b/src/Encoder/SoapEnc/SoapArrayEncoder.php
@@ -4,7 +4,7 @@
namespace Soap\Encoding\Encoder\SoapEnc;
use Closure;
-use DOMElement;
+use Dom\Element as DomElement;
use Soap\Encoding\Encoder\Context;
use Soap\Encoding\Encoder\Feature\ListAware;
use Soap\Encoding\Encoder\XmlEncoder;
@@ -100,7 +100,7 @@ private function decodeArray(Context $context, SoapArrayAccess $arrayAccess, Ele
* @param list $list
* @return list
*/
- static function (array $list, DOMElement $item) use ($iso): array {
+ static function (array $list, DomElement $item) use ($iso): array {
/** @var mixed $value */
$value = $iso->from(Element::fromDOMElement($item));
diff --git a/src/Encoder/SoapEnc/SoapObjectEncoder.php b/src/Encoder/SoapEnc/SoapObjectEncoder.php
index 775f803..d433118 100644
--- a/src/Encoder/SoapEnc/SoapObjectEncoder.php
+++ b/src/Encoder/SoapEnc/SoapObjectEncoder.php
@@ -4,7 +4,7 @@
namespace Soap\Encoding\Encoder\SoapEnc;
use Closure;
-use DOMElement;
+use Dom\Element as DomElement;
use Soap\Encoding\Encoder\Context;
use Soap\Encoding\Encoder\SimpleType\ScalarTypeEncoder;
use Soap\Encoding\Encoder\XmlEncoder;
@@ -75,8 +75,8 @@ private function decodeArray(Context $context, Element $value): object
$element = $value->element();
return (object) readChildren($element)->reduce(
- static function (array $map, DOMElement $item) use ($context): array {
- $key = $item->localName ?? 'unkown';
+ static function (array $map, DomElement $item) use ($context): array {
+ $key = $item->localName;
/** @psalm-var mixed $value */
$value = ElementValueReader::forEncoder(
$context->withType(XsdType::any()),
diff --git a/src/Fault/Encoder/Soap11FaultEncoder.php b/src/Fault/Encoder/Soap11FaultEncoder.php
index 1d9735f..91cfce5 100644
--- a/src/Fault/Encoder/Soap11FaultEncoder.php
+++ b/src/Fault/Encoder/Soap11FaultEncoder.php
@@ -90,9 +90,9 @@ private function from(string $fault): Soap11Fault
$detail = $xpath->query('./detail');
return new Soap11Fault(
- faultCode: WhitespaceRestriction::collapse($xpath->querySingle('./faultcode')->textContent),
- faultString: WhitespaceRestriction::collapse($xpath->querySingle('./faultstring')->textContent),
- faultActor: $actor->count() ? trim($actor->expectFirst()->textContent) : null,
+ faultCode: WhitespaceRestriction::collapse($xpath->querySingle('./faultcode')->textContent ?? ''),
+ faultString: WhitespaceRestriction::collapse($xpath->querySingle('./faultstring')->textContent ?? ''),
+ faultActor: $actor->count() ? trim($actor->expectFirst()->textContent ?? '') : null,
detail: $detail->count() ? Document::fromXmlNode($detail->expectFirst())->stringifyDocumentElement() : null,
);
}
diff --git a/src/Fault/Encoder/Soap12FaultEncoder.php b/src/Fault/Encoder/Soap12FaultEncoder.php
index 39cdede..5c6bbd3 100644
--- a/src/Fault/Encoder/Soap12FaultEncoder.php
+++ b/src/Fault/Encoder/Soap12FaultEncoder.php
@@ -135,11 +135,11 @@ private function from(string $fault): Soap12Fault
$detail = $xpath->query('./env:Detail');
return new Soap12Fault(
- code: WhitespaceRestriction::collapse($xpath->querySingle('./env:Code/env:Value')->textContent),
- reason: WhitespaceRestriction::collapse($xpath->querySingle('./env:Reason/env:Text')->textContent),
- subCode: $subCode->count() ? WhitespaceRestriction::collapse($subCode->expectFirst()->textContent) : null,
- node: $node->count() ? trim($node->expectFirst()->textContent) : null,
- role: $role->count() ? trim($role->expectFirst()->textContent) : null,
+ code: WhitespaceRestriction::collapse($xpath->querySingle('./env:Code/env:Value')->textContent ?? ''),
+ reason: WhitespaceRestriction::collapse($xpath->querySingle('./env:Reason/env:Text')->textContent ?? ''),
+ subCode: $subCode->count() ? WhitespaceRestriction::collapse($subCode->expectFirst()->textContent ?? '') : null,
+ node: $node->count() ? trim($node->expectFirst()->textContent ?? '') : null,
+ role: $role->count() ? trim($role->expectFirst()->textContent ?? '') : null,
detail: $detail->count() ? Document::fromXmlNode($detail->expectFirst())->stringifyDocumentElement() : null,
);
}
diff --git a/src/TypeInference/XsiTypeDetector.php b/src/TypeInference/XsiTypeDetector.php
index 59a80c7..6c2b296 100644
--- a/src/TypeInference/XsiTypeDetector.php
+++ b/src/TypeInference/XsiTypeDetector.php
@@ -3,7 +3,7 @@
namespace Soap\Encoding\TypeInference;
-use DOMElement;
+use Dom\Element;
use Psl\Option\Option;
use Soap\Encoding\Cache\ScopedCache;
use Soap\Encoding\Encoder\Context;
@@ -58,10 +58,10 @@ static function () use ($context, $value) {
/**
* @return Option
*/
- public static function detectXsdTypeFromXmlElement(Context $context, DOMElement $element): Option
+ public static function detectXsdTypeFromXmlElement(Context $context, Element $element): Option
{
- $xsiType = $element->getAttributeNS(Xmlns::xsi()->value(), 'type') ?: $element->getAttribute('xsi:type');
- if (!$xsiType) {
+ $xsiType = $element->getAttributeNS(Xmlns::xsi()->value(), 'type') ?? $element->getAttribute('xsi:type');
+ if ($xsiType === null || $xsiType === '') {
return none();
}
@@ -91,7 +91,7 @@ public static function detectXsdTypeFromXmlElement(Context $context, DOMElement
/**
* @return Option>
*/
- public static function detectEncoderFromXmlElement(Context $context, DOMElement $element): Option
+ public static function detectEncoderFromXmlElement(Context $context, Element $element): Option
{
$requestedXsiType = self::detectXsdTypeFromXmlElement($context, $element);
if (!$requestedXsiType->isSome()) {
diff --git a/src/Xml/Node/Element.php b/src/Xml/Node/Element.php
index 6ae397a..4e9d7aa 100644
--- a/src/Xml/Node/Element.php
+++ b/src/Xml/Node/Element.php
@@ -3,14 +3,15 @@
namespace Soap\Encoding\Xml\Node;
-use DOMElement;
+use Dom\Element as DomElement;
use Stringable;
use VeeWee\Xml\Dom\Document;
use function Psl\invariant;
+use function VeeWee\Xml\Dom\Assert\assert_document;
final class Element implements Stringable
{
- private ?DOMElement $element = null;
+ private ?DomElement $element = null;
/**
* @var non-empty-string|null
*/
@@ -32,7 +33,7 @@ public static function fromString(string $xml): Element
return $new;
}
- public static function fromDOMElement(DOMElement $element): self
+ public static function fromDOMElement(DomElement $element): self
{
$new = new self();
$new->element = $element;
@@ -41,7 +42,7 @@ public static function fromDOMElement(DOMElement $element): self
return $new;
}
- public function element(): DOMElement
+ public function element(): DomElement
{
if (!$this->element) {
invariant($this->value !== null, 'Expected an XML value to be present');
@@ -66,7 +67,7 @@ public function value(): string
public function document(): Document
{
- return Document::fromUnsafeDocument($this->element()->ownerDocument);
+ return Document::fromUnsafeDocument(assert_document($this->element()->ownerDocument));
}
/**
diff --git a/src/Xml/Node/ElementList.php b/src/Xml/Node/ElementList.php
index 0740e28..eb71b13 100644
--- a/src/Xml/Node/ElementList.php
+++ b/src/Xml/Node/ElementList.php
@@ -5,7 +5,7 @@
use Closure;
use Countable;
-use DOMElement;
+use Dom\Element as DomElement;
use Soap\Encoding\Xml\Reader\DocumentToLookupArrayReader;
use Stringable;
use VeeWee\Xml\Dom\Document;
@@ -69,7 +69,7 @@ public static function fromString(string $xml): self
return new self(
...readChildren($doc->locateDocumentElement())->map(
- static fn (DOMElement $element): Element => Element::fromDOMElement($element)
+ static fn (DomElement $element): Element => Element::fromDOMElement($element)
)
);
}
diff --git a/src/Xml/Reader/DocumentToLookupArrayReader.php b/src/Xml/Reader/DocumentToLookupArrayReader.php
index 1efb076..dd6b7b1 100644
--- a/src/Xml/Reader/DocumentToLookupArrayReader.php
+++ b/src/Xml/Reader/DocumentToLookupArrayReader.php
@@ -3,8 +3,8 @@
namespace Soap\Encoding\Xml\Reader;
-use DOMAttr;
-use DOMNode;
+use Dom\Attr;
+use Dom\Node;
use Soap\Encoding\Xml\Node\Element;
use Soap\Encoding\Xml\Node\ElementList;
use VeeWee\Xml\Xmlns\Xmlns;
@@ -28,14 +28,14 @@ public function __invoke(Element $xml): array
// Read all child elements.
// The key is the name of the elements
// The value is the raw XML for those element(s)
- /** @var iterable $children */
+ /** @var iterable $children */
$children = $root->childNodes;
foreach ($children as $element) {
if (!is_element($element)) {
continue;
}
- $key = $element->localName ?? 'unknown';
+ $key = $element->localName;
$previousValue = $nodes[$key] ?? null;
$currentElement = Element::fromDOMElement($element);
@@ -53,14 +53,14 @@ public function __invoke(Element $xml): array
// It might be possible that the child is a regular textNode.
// In that case, we use '_' as the key and the value of the textNode as value.
if (!$nodes && $root->getAttributeNS(Xmlns::xsi()->value(), 'nil') !== 'true') {
- $nodes['_'] = $root->textContent;
+ $nodes['_'] = $root->textContent ?? '';
}
// All attributes also need to be added as key => value pairs.
- /** @var \iterable $attributes */
+ /** @var \iterable $attributes */
$attributes = $root->attributes;
foreach ($attributes as $attribute) {
- $key = $attribute->localName ?? 'unknown';
+ $key = $attribute->localName;
$nodes[$key] = $attribute->value;
}
diff --git a/src/Xml/Reader/ElementValueReader.php b/src/Xml/Reader/ElementValueReader.php
index 40298bc..33afc7d 100644
--- a/src/Xml/Reader/ElementValueReader.php
+++ b/src/Xml/Reader/ElementValueReader.php
@@ -3,7 +3,7 @@
namespace Soap\Encoding\Xml\Reader;
-use DOMElement;
+use Dom\Element;
use Soap\Encoding\Encoder\Context;
use Soap\Encoding\Encoder\XmlEncoder;
use VeeWee\Reflecta\Iso\Iso;
@@ -19,7 +19,7 @@ final class ElementValueReader
public function __invoke(
Context $context,
XmlEncoder $encoder,
- DOMElement $element
+ Element $element
): mixed {
return self::forEncoder($context, $encoder, $element);
}
@@ -28,7 +28,7 @@ public function __invoke(
* @param XmlEncoder $encoder
* @psalm-return mixed
*/
- public static function forEncoder(Context $context, XmlEncoder $encoder, DOMElement $element): mixed
+ public static function forEncoder(Context $context, XmlEncoder $encoder, Element $element): mixed
{
return $encoder->iso($context)->from(
readValue($element, string())
@@ -39,7 +39,7 @@ public static function forEncoder(Context $context, XmlEncoder $encoder, DOMElem
* @param Iso $iso
* @psalm-return mixed
*/
- public static function forIso(Iso $iso, DOMElement $element): mixed
+ public static function forIso(Iso $iso, Element $element): mixed
{
return $iso->from(
readValue($element, string())
diff --git a/src/Xml/Reader/SoapEnvelopeReader.php b/src/Xml/Reader/SoapEnvelopeReader.php
index 1246980..65c7e1a 100644
--- a/src/Xml/Reader/SoapEnvelopeReader.php
+++ b/src/Xml/Reader/SoapEnvelopeReader.php
@@ -8,7 +8,6 @@
use Soap\Xml\Locator\SoapBodyLocator;
use VeeWee\Xml\Dom\Document;
use function VeeWee\Xml\Dom\Assert\assert_element;
-use function VeeWee\Xml\Dom\Configurator\loader;
use function VeeWee\Xml\Dom\Loader\xml_string_loader;
final class SoapEnvelopeReader
@@ -19,7 +18,7 @@ final class SoapEnvelopeReader
*/
public function __invoke(string $xml, int $libXmlOptions = 0): Element
{
- $envelope = Document::configure(loader(xml_string_loader($xml, $libXmlOptions)));
+ $envelope = Document::fromLoader(xml_string_loader($xml, $libXmlOptions));
// Make sure it does not contain a fault response before parsing the body parts.
(new SoapFaultGuard())($envelope);
diff --git a/tests/Unit/Fault/Encoder/Soap11FaultEncoderTest.php b/tests/Unit/Fault/Encoder/Soap11FaultEncoderTest.php
index 2ec8857..74d5a5a 100644
--- a/tests/Unit/Fault/Encoder/Soap11FaultEncoderTest.php
+++ b/tests/Unit/Fault/Encoder/Soap11FaultEncoderTest.php
@@ -7,9 +7,7 @@
use Soap\Encoding\Fault\Encoder\Soap11FaultEncoder;
use Soap\Encoding\Fault\Soap11Fault;
use VeeWee\Xml\Dom\Document;
-use function VeeWee\Xml\Dom\Configurator\loader;
use function VeeWee\Xml\Dom\Configurator\trim_spaces;
-use function VeeWee\Xml\Dom\Loader\xml_string_loader;
#[CoversClass(Soap11FaultEncoder::class)]
#[CoversClass(Soap11Fault::class)]
@@ -23,16 +21,15 @@ public static function provideIsomorphicCases(): iterable
yield 'required-fields-only' => [
...$baseConfig,
- 'xml' => Document::configure(
- trim_spaces(),
- loader(xml_string_loader(
- << Document::fromXmlString(
+ <<
a:Microsoft.Dynamics.ServiceBrokerException
Invalid input parameter x
EOXML
- ))
+ ,
+ trim_spaces()
)->stringifyDocumentElement(),
'data' => new Soap11Fault(
faultCode: 'a:Microsoft.Dynamics.ServiceBrokerException',
@@ -41,10 +38,8 @@ public static function provideIsomorphicCases(): iterable
];
yield 'all-fields' => [
...$baseConfig,
- 'xml' => Document::configure(
- trim_spaces(),
- loader(xml_string_loader(
- << Document::fromXmlString(
+ <<
a:Microsoft.Dynamics.ServiceBrokerException
Invalid input parameter x
@@ -52,7 +47,8 @@ public static function provideIsomorphicCases(): iterable
value
EOXML
- ))
+ ,
+ trim_spaces()
)->stringifyDocumentElement(),
'data' => new Soap11Fault(
faultCode: 'a:Microsoft.Dynamics.ServiceBrokerException',
diff --git a/tests/Unit/Fault/Encoder/Soap12FaultEncoderTest.php b/tests/Unit/Fault/Encoder/Soap12FaultEncoderTest.php
index ed0ea37..5265134 100644
--- a/tests/Unit/Fault/Encoder/Soap12FaultEncoderTest.php
+++ b/tests/Unit/Fault/Encoder/Soap12FaultEncoderTest.php
@@ -7,9 +7,7 @@
use Soap\Encoding\Fault\Encoder\Soap12FaultEncoder;
use Soap\Encoding\Fault\Soap12Fault;
use VeeWee\Xml\Dom\Document;
-use function VeeWee\Xml\Dom\Configurator\loader;
use function VeeWee\Xml\Dom\Configurator\trim_spaces;
-use function VeeWee\Xml\Dom\Loader\xml_string_loader;
#[CoversClass(Soap12FaultEncoder::class)]
#[CoversClass(Soap12Fault::class)]
@@ -23,10 +21,8 @@ public static function provideIsomorphicCases(): iterable
yield 'required-fields-only' => [
...$baseConfig,
- 'xml' => Document::configure(
- trim_spaces(),
- loader(xml_string_loader(
- << Document::fromXmlString(
+ <<
env:Sender
@@ -36,7 +32,8 @@ public static function provideIsomorphicCases(): iterable
EOXML
- ))
+ ,
+ trim_spaces()
)->stringifyDocumentElement(),
'data' => new Soap12Fault(
code: 'env:Sender',
@@ -45,66 +42,24 @@ public static function provideIsomorphicCases(): iterable
];
yield 'subcode-and-details-example' => [
...$baseConfig,
- 'xml' => Document::configure(
- trim_spaces(),
- loader(xml_string_loader(
- <<
-
- env:Sender
-
- m:MessageTimeout
-
-
-
- Sender Timeout
-
- P5M
-
- EOXML
- ))
- )->stringifyDocumentElement(),
+ 'xml' => 'env:Senderm:MessageTimeoutSender TimeoutP5M',
'data' => new Soap12Fault(
code: 'env:Sender',
subCode: 'm:MessageTimeout',
reason: 'Sender Timeout',
- detail: trim(<<P5M
- EOXML)
+ detail: 'P5M',
),
];
yield 'full-example' => [
...$baseConfig,
- 'xml' => Document::configure(
- trim_spaces(),
- loader(xml_string_loader(
- <<
-
- env:Sender
-
- m:MessageTimeout
-
-
-
- Sender Timeout
-
- urn:node
- urn:role
- P5M
-
- EOXML
- ))
- )->stringifyDocumentElement(),
+ 'xml' => 'env:Senderm:MessageTimeoutSender Timeouturn:nodeurn:roleP5M',
'data' => new Soap12Fault(
code: 'env:Sender',
subCode: 'm:MessageTimeout',
reason: 'Sender Timeout',
node: 'urn:node',
role: 'urn:role',
- detail: trim(<<P5M
- EOXML)
+ detail: 'P5M',
),
];
}
diff --git a/tests/Unit/TypeInference/XsiTypeDetectorTest.php b/tests/Unit/TypeInference/XsiTypeDetectorTest.php
index 3b4da1c..a8ba494 100644
--- a/tests/Unit/TypeInference/XsiTypeDetectorTest.php
+++ b/tests/Unit/TypeInference/XsiTypeDetectorTest.php
@@ -3,8 +3,8 @@
namespace Soap\Encoding\Test\Unit\TypeInference;
-use DOMDocument;
-use DOMElement;
+use Dom\Element;
+use Dom\XMLDocument;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\TestCase;
use Soap\Encoding\Test\Unit\ContextCreatorTrait;
@@ -62,10 +62,8 @@ public function test_it_detects_xsi_type_with_mismatched_prefix(): void
*/
public function test_it_detects_xsi_type_without_xsi_namespace_declaration(): void
{
- $doc = new DOMDocument();
- $doc->loadXML('');
+ $doc = XMLDocument::createFromString('');
$element = $doc->documentElement;
- $element->setAttribute('xsi:type', 'tns:MyType');
$context = self::createContext(XsdType::guess('anyType'));
$result = XsiTypeDetector::detectXsdTypeFromXmlElement($context, $element);
@@ -114,8 +112,7 @@ public function test_it_returns_none_for_unprefixed_xsi_type_without_default_nam
*/
public function test_it_falls_back_to_wsdl_namespaces_when_dom_has_no_declaration(): void
{
- $doc = new DOMDocument();
- $doc->loadXML('');
+ $doc = XMLDocument::createFromString('');
$element = $doc->documentElement;
$element->setAttributeNS('http://www.w3.org/2001/XMLSchema-instance', 'xsi:type', 'tns:MyType');
@@ -140,10 +137,9 @@ public function test_it_returns_none_for_unknown_prefix(): void
static::assertFalse($result->isSome());
}
- private function createElement(string $xml): DOMElement
+ private function createElement(string $xml): Element
{
- $doc = new DOMDocument();
- $doc->loadXML($xml);
+ $doc = XMLDocument::createFromString($xml);
return $doc->documentElement;
}
diff --git a/tests/Unit/Xml/Node/ElementTest.php b/tests/Unit/Xml/Node/ElementTest.php
index e26a35c..0a91d1e 100644
--- a/tests/Unit/Xml/Node/ElementTest.php
+++ b/tests/Unit/Xml/Node/ElementTest.php
@@ -3,7 +3,7 @@
namespace Soap\Encoding\Test\Unit\Xml\Node;
-use DOMDocument;
+use Dom\XMLDocument;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\TestCase;
use Soap\Encoding\Xml\Node\Element;
@@ -25,8 +25,7 @@ public function test_it_can_be_constructed_from_xml(): void
public function test_it_can_be_constructed_from_dom_element(): void
{
- $document = new DOMDocument();
- $document->loadXML($xml = 'world');
+ $document = XMLDocument::createFromString($xml = 'world');
$element = Element::fromDOMElement($DOMElement = $document->documentElement);
static::assertSame($DOMElement, $element->element());