1

g指定された SVG ドキュメントの最初のノードのみを選択して出力する方法は?

これは入力 SVG データです ( $svg_doc):

<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="765" height="990" id="svg2" xml:space="preserve">
<metadata id="metadata8">
    <rdf:rdf>
        <cc:work rdf:about="">
            <dc:format>image/svg+xml</dc:format>
            <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"></dc:type>
        </cc:work>
    </rdf:rdf>
</metadata>
<defs id="defs6"></defs>
<g transform="matrix(1.25,0,0,-1.25,0,990)" id="g10">
    <g id="g11">
        <path d="m 14.875,768.812 0.203,-0.046 -0.687,-2.157 -6.157,0 0,0.219 0.313,0 c 0.332,0 0.57,0.11 0.719,0.328 0.082,0.125 0.125,0.41 0.125,0.86 l 0,5.14 c 0,0.489 -0.059,0.797 -0.172,0.922 -0.157,0.176 -0.383,0.266 -0.672,0.266 l -0.313,0 0,0.218 3.61,0 0,-0.218 c -0.43,0 -0.727,-0.043 -0.891,-0.125 -0.168,-0.086 -0.281,-0.188 -0.344,-0.313 -0.062,-0.125 -0.093,-0.422 -0.093,-0.89 l 0,-5 c 0,-0.325 0.031,-0.543 0.093,-0.657 0.039,-0.086 0.11,-0.148 0.203,-0.187 0.102,-0.043 0.411,-0.063 0.922,-0.063 l 0.578,0 c 0.614,0 1.04,0.047 1.282,0.141 0.25,0.094 0.472,0.25 0.672,0.469 0.207,0.226 0.41,0.593 0.609,1.093 z" id="path14"></path>
    </g>
</g>
<g id="g23"></g>
<g id="g24"></g>
</svg>

私が試したPHPコード:

<?php
$dom = new DOMDocument;
$dom->loadXml($svg_doc);
echo $dom->getElementsByTagname('g')->item(0)->value;
?>

結果が悪い:

Notice: Undefined property: DOMElement::$value in /home/...

これは次のようになります。

<g transform="matrix(1.25,0,0,-1.25,0,990)" id="g10">
    <g id="g11">
        <path d="m 14.875,768.812 0.203,-0.046 -0.687,-2.157 -6.157,0 0,0.219 0.313,0 c 0.332,0 0.57,0.11 0.719,0.328 0.082,0.125 0.125,0.41 0.125,0.86 l 0,5.14 c 0,0.489 -0.059,0.797 -0.172,0.922 -0.157,0.176 -0.383,0.266 -0.672,0.266 l -0.313,0 0,0.218 3.61,0 0,-0.218 c -0.43,0 -0.727,-0.043 -0.891,-0.125 -0.168,-0.086 -0.281,-0.188 -0.344,-0.313 -0.062,-0.125 -0.093,-0.422 -0.093,-0.89 l 0,-5 c 0,-0.325 0.031,-0.543 0.093,-0.657 0.039,-0.086 0.11,-0.148 0.203,-0.187 0.102,-0.043 0.411,-0.063 0.922,-0.063 l 0.578,0 c 0.614,0 1.04,0.047 1.282,0.141 0.25,0.094 0.472,0.25 0.672,0.469 0.207,0.226 0.41,0.593 0.609,1.093 z" id="path14"></path>
    </g>
</g>

最初のルートgノードのみが選択され、出力されます。

4

1 に答える 1

1

DOMNode::C14N()メソッドを使用してみてください:

echo $dom->getElementsByTagname('g')->item(0)->C14N(true);

UPDv1:

DOMDocument::saveXML()代わりにメソッドを使用 してください。より信頼できる。

$node = $dom->getElementsByTagname('g')->item(0);
echo $dom->saveXML($node);
于 2013-09-26T02:07:28.207 に答える