XML DOM processing for Golang, supports xpath query

go-xmldom

Go Report Card GoDoc

XML DOM processing for Golang, supports xpath query

  • Parse XML into dom
  • Query node using xpath
  • Update XML using dom

Installation

$ go get github.com/subchen/go-xmldom

Basic Usage

xml := `<testsuite tests="2" failures="0" time="0.009" name="github.com/subchen/go-xmldom">
    <testcase classname="go-xmldom" name="ExampleParseXML" time="0.004"></testcase>
    <testcase classname="go-xmldom" name="ExampleParse" time="0.005"></testcase>
</testsuite>`

doc := xmldom.Must(xmldom.ParseXML(xml))
root := doc.Root

name := root.GetAttributeValue("name")
time := root.GetAttributeValue("time")
fmt.Printf("testsuite: name=%v, time=%v\n", name, time)

for _, node := range root.GetChildren("testcase") {
    name := node.GetAttributeValue("name")
    time := node.GetAttributeValue("time")
    fmt.Printf("testcase: name=%v, time=%v\n", name, time)
}

Xpath Query

// find all children
fmt.Printf("children = %v\n", len(node.Query("//*")))

// find node matched tag name
nodeList := node.Query("//testcase")
for _, c := range nodeList {
    fmt.Printf("%v: name = %v\n", c.Name, c.GetAttributeValue("name"))
}

// find node matched attr name
c := node.QueryOne("//testcase[@name='ExampleParseXML']")
fmt.Printf("%v: name = %v\n", c.Name, c.GetAttributeValue("name"))

Create XML

doc := xmldom.NewDocument("testsuites")

suiteNode := doc.Root.CreateNode("testsuite").SetAttributeValue("name", "github.com/subchen/go-xmldom")
suiteNode.CreateNode("testcase").SetAttributeValue("name", "case 1")
suiteNode.CreateNode("testcase").SetAttributeValue("name", "case 2")

fmt.Println(doc.XML())

License

go-xmldom is released under the Apache 2.0 license. See LICENSE

Comments
  • Added GO module support

    Added GO module support

    GO v1.11 module support

    NOTE: It is important to create a new release including this change! See https://github.com/konsorten/go-xmldom/releases/tag/v1.1.2

    WORKAROUND for projects using this library: For now, you can add the following line to the go.mod file: replace github.com/subchen/go-xmldom => github.com/konsorten/go-xmldom v1.1.2

  • Add support for creating document & node with namespace

    Add support for creating document & node with namespace

    • Added support for creating a new Document with a namespace for the root Node.
    • Added support for creating a Node with a namespace. If the namespace already exists in the document (matching by URI), then the pre-existing namespace will be used, even if the name is different.
  • (*Node) RemoveChild(*Node) has a typo in the append() parameter

    (*Node) RemoveChild(*Node) has a typo in the append() parameter

    For the code line:

    n.Children = append(n.Children[:1], n.Children[i+1:]...)

    the "1" in the first n.Children[] index should be "i" like this

    n.Children = append(n.Children[:i], n.Children[i+1:]...)

    I played with it here to figure out why RemoveChild() wasn't working right for me: https://play.golang.org/p/e1-Xn6R-qQ

  • Parsing CDATA does not work

    Parsing CDATA does not work

    I was parsing a XML file that contains CData sections and got empty strings. After a little digging I found the error. It seems that the underlying xml package produces multiple xml.CharData-Tokens for a node if it contains CData. Replacing https://github.com/subchen/go-xmldom/blob/e1029cd9087cb9c9c8941b155414b8b8e7ce293a/dom.go#L69 with

    e.Text += string(bytes.TrimSpace(token))
    

    fixes the error.

    Additionally I wrote a test case for this issue.

    func TestParseCData(t *testing.T) {
    	doc, err := xmldom.ParseXML(`
    	<r>
    	<![CDATA[
    		Hello World!
    	]]>
    	</r>
    	`)
    	if err != nil {
    		t.Fail()
    	}
    	if doc.Root.Text != "Hello World!" {
    		t.Errorf(`got "%s", expected "Hello World!"`, doc.Root.Text)
    	}
    }
    
  • Update XML example please

    Update XML example please

    go-xmldom is able to "Update XML using dom", so is it possible to locate an xml node via xapth then edit/modify the content/attributes?

    If so, an working example would be appreciated. Thx.

  • Bug, attribute name

    Bug, attribute name "prefixes" are dropped

    Reading this XML file (an SVG) and then simply resaving it will write invalid characters in the CSS part.

    The error that chrome gives on trying to read this SVG

    This page contains the following errors:
    error on line 2 at column 457: Attribute version redefined
    Below is a rendering of the page up to the first error.
    

    Line 2: original

    <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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
       xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
       id="Logo"
       width="2139"
       height="2139"
       viewBox="0 0 2139 2139"
       version="1.1"
       sodipodi:docname="siknas07-alt03.svg"
       inkscape:version="0.92.1 r15371"
       inkscape:label="Cirkel">
    

    rewritten file

    <svg dc="http://purl.org/dc/elements/1.1/" cc="http://creativecommons.org/ns#" rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" inkscape="http://www.inkscape.org/namespaces/inkscape" id="Logo" width="2139" height="2139" viewBox="0 0 2139 2139" version="1.1" docname="siknas07-alt03.svg" version="0.92.1 r15371" label="Cirkel">
    

    Seems like all prefixes are dropped from the attribute names, resulting in duplicate version:

    version="1.1"
    inkscape:version="0.92.1 r15371"
    

    Becomes

    version="1.1"
    version="0.92.1 r15371"
    

    Small program to reproduce this:

    package main
    
    import (
    	"fmt"
    	xmldom "github.com/subchen/go-xmldom"
    )
    
    var svgData = `
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
       xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
       id="Logo"
       width="2139"
       height="2139"
       viewBox="0 0 2139 2139"
       version="1.1"
       sodipodi:docname="siknas07-alt03.svg"
       inkscape:version="0.92.1 r15371"
       inkscape:label="Cirkel">
      <metadata
         id="metadata30">
        <rdf:RDF>
          <cc:Work
             rdf:about="">
            <dc:format>image/svg+xml</dc:format>
            <dc:type
               rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
            <dc:title></dc:title>
          </cc:Work>
        </rdf:RDF>
      </metadata>
      <sodipodi:namedview
         pagecolor="#ffffff"
         bordercolor="#666666"
         borderopacity="1"
         objecttolerance="10"
         gridtolerance="10"
         guidetolerance="10"
         inkscape:pageopacity="0"
         inkscape:pageshadow="2"
         inkscape:window-width="1280"
         inkscape:window-height="961"
         id="namedview28"
         showgrid="false"
         inkscape:zoom="0.15603291"
         inkscape:cx="160.60893"
         inkscape:cy="1292.5084"
         inkscape:window-x="-8"
         inkscape:window-y="616"
         inkscape:window-maximized="1"
         inkscape:current-layer="g4553" />
      <defs
         id="defs4">
        <style
           id="style2">
          .cls-1 {
            fill: #35462d;
          }
    
          .cls-1, .cls-2, .cls-3, .cls-5 {
            fill-rule: evenodd;
          }
    
          .cls-2, .cls-5 {
            fill: none;
            stroke-width: 20px;
          }
    
          .cls-2 {
            stroke: #90a3bc;
          }
    
          .cls-3 {
            fill: #90a3bc;
          }
    
          .cls-4 {
            opacity: 0.08;
            mix-blend-mode: difference;
          }
    
          .cls-5 {
            stroke: #296d69;
          }
        </style>
        <clipPath
           clipPathUnits="userSpaceOnUse"
           id="clipPath4562">
          <circle
             cx="1069.5"
             cy="1069.5"
             r="1069.5"
             id="circle4564" />
        </clipPath>
        <clipPath clipPathUnits="userSpaceOnUse" id="SiknasClipPath">
          <path
             id="iknäs_road_as_shape"
             data-name="iknäs road as shape"
             class="cls-1"
             d="m 904.1,808.61 q 3.732,-10.218 -1.036,-24.787 -5.137,-15.688 -13.775,-20.719 -8.638,-5.031 -20.777,-1.055 a 32.915,32.915 0 0 0 -9.84,4.98 19.527,19.527 0 0 0 -6.038,7.56 24.406,24.406 0 0 0 -1.859,10.742 52.626,52.626 0 0 0 2.918,14.658 q 4.953,15.129 14.078,20.827 9.125,5.698 20.455,1.988 12.136,-3.975 15.874,-14.194 z m 59.183,315.12 40.952,-13.41 -84.217,-257.188 -40.954,13.41 z m 84.282,-27.85 40.19,-15.55 -48.455,-125.185 1.27,-0.492 94.52,107.357 40.98,-15.87 -106.21,-116.313 3.92,-134.282 -38.6,14.94 -0.92,127.856 -1.28,0.491 -74.268,-191.9 -40.188,15.555 z m 148.23,-59.63 40.51,-14.69 -74.62,-205.823 a 44.962,44.962 0 0 1 6.02,-16.61 q 4.335,-6.793 10.42,-9 8.64,-3.135 15.51,1.8 6.87,4.935 12.96,21.747 l 70.06,193.259 40.52,-14.683 -70.685,-194.93 q -11.31,-31.223 -27.46,-43.035 -16.15,-11.812 -35.53,-4.785 a 55.687,55.687 0 0 0 -11.71,5.92 46.331,46.331 0 0 0 -10.28,9.371 56.856,56.856 0 0 0 -8.07,13.482 74.758,74.758 0 0 0 -5.07,18.249 l -0.07,-0.185 -13.53,-25.825 -31.22,11.321 z m 222.33,-77.036 a 56.041,56.041 0 0 0 13.01,-23.121 l 9.07,21.559 30.89,-8.451 -53.485,-195.441 a 152.848,152.848 0 0 0 -10.96,-29.4 q -6.225,-12.147 -15.22,-18.859 a 41.677,41.677 0 0 0 -21.33,-7.918 q -12.345,-1.207 -29.26,3.423 a 72.8,72.8 0 0 0 -22.76,10.4 53.056,53.056 0 0 0 -15.51,16.571 53.964,53.964 0 0 0 -7.02,22.094 q -1.29,12.378 2.7,26.972 a 106.08,106.08 0 0 0 4.09,12.024 q 2.415,5.961 5.92,12.947 l 31.71,-8.676 -3.11,-11.374 a 82.293,82.293 0 0 1 -3.25,-19.284 37.625,37.625 0 0 1 1.78,-13.525 19.061,19.061 0 0 1 5.63,-8.469 21.489,21.489 0 0 1 8.1,-4.256 q 6.57,-1.8 11.1,-0.083 a 17.187,17.187 0 0 1 7.75,6.032 40.851,40.851 0 0 1 5.49,10.722 q 2.28,6.4 4.36,13.987 l 9.44,34.5 q -5.355,4.322 -12.14,10.149 -6.785,5.827 -12.05,11.142 a 160.833,160.833 0 0 0 -18.56,21.888 88.407,88.407 0 0 0 -11.51,22.817 81.212,81.212 0 0 0 -3.93,25.323 112.178,112.178 0 0 0 4.38,29.568 106.22,106.22 0 0 0 9.7,24.141 65.08,65.08 0 0 0 13.88,17.5 44.2,44.2 0 0 0 17.33,9.42 37.074,37.074 0 0 0 19.96,-0.268 49.405,49.405 0 0 0 23.8,-14.054 z m -34.26,-32.6 q -7.59,-7.7 -11.68,-22.681 a 71.891,71.891 0 0 1 -2.75,-18.1 65.4,65.4 0 0 1 1.56,-15.607 52.613,52.613 0 0 1 4.68,-12.895 64.545,64.545 0 0 1 6.58,-10.155 71.8,71.8 0 0 1 7.37,-7.925 q 3.525,-3.207 6.41,-5.624 l 22.35,81.7 a 32.461,32.461 0 0 1 -6.36,9.992 19.884,19.884 0 0 1 -9.41,5.938 q -11.18,3.063 -18.755,-4.643 z m -5.08,-279.9 q 3.06,-9.494 -0.94,-24.092 -4.56,-16.678 -11.97,-23.11 -7.41,-6.432 -20.88,-2.742 a 26.652,26.652 0 0 0 -10.3,4.958 16.254,16.254 0 0 0 -5.16,7.931 29.491,29.491 0 0 0 -0.84,11.131 87.189,87.189 0 0 0 2.82,14.51 q 4.215,15.354 11.07,21.728 6.87,6.374 19.68,2.867 13.465,-3.686 16.515,-13.181 z m -71.87,19.668 q 2.97,-9.472 -1.02,-24.069 -4.575,-16.68 -11.9,-23.133 -7.325,-6.453 -20.8,-2.765 a 27.308,27.308 0 0 0 -10.38,4.98 16.259,16.259 0 0 0 -5.24,7.955 29.487,29.487 0 0 0 -0.84,11.13 86.253,86.253 0 0 0 2.83,14.51 q 4.2,15.354 11.14,21.706 6.94,6.352 19.77,2.844 13.465,-3.686 16.435,-13.158 z M 1480.48,912.37 a 47.58,47.58 0 0 0 11.8,18.564 45.4,45.4 0 0 0 17.89,10.306 78.408,78.408 0 0 0 22.1,3.395 67.4,67.4 0 0 0 25.53,-4.118 51.893,51.893 0 0 0 19.02,-12.476 54.023,54.023 0 0 0 11.89,-19.763 86.733,86.733 0 0 0 1.62,-48.623 121.75,121.75 0 0 0 -7.18,-20.064 150.694,150.694 0 0 0 -9.1,-16.851 q -4.815,-7.639 -8.48,-13.008 l -33.67,-47.115 a 136.59,136.59 0 0 1 -10.11,-17.653 39.407,39.407 0 0 1 -3.64,-17.551 37.627,37.627 0 0 1 1.07,-8.435 21.217,21.217 0 0 1 3.35,-7.416 17.408,17.408 0 0 1 6.13,-5.309 19.23,19.23 0 0 1 9.4,-1.916 q 6.465,0.1 10.42,3.506 3.955,3.406 6.15,10.023 a 69.032,69.032 0 0 1 2.88,16.655 q 0.705,10.035 0.66,23.4 l 29.8,0.47 q 1.455,-6.265 3.05,-15.087 a 112.855,112.855 0 0 0 1.74,-18.252 70.1,70.1 0 0 0 -3.54,-24.527 45.556,45.556 0 0 0 -28.33,-28.653 70.055,70.055 0 0 0 -22.94,-3.9 64.538,64.538 0 0 0 -22.03,3.387 50.752,50.752 0 0 0 -18.49,11.109 55,55 0 0 0 -12.9,19.059 q -4.875,11.523 -5.12,27.241 a 92.619,92.619 0 0 0 2.29,22.443 122.454,122.454 0 0 0 6.66,20.449 155.19,155.19 0 0 0 9.75,19.024 q 5.565,9.227 11.56,18.166 l 30.83,43.336 q 3.33,4.968 5.99,9.136 a 64.23,64.23 0 0 1 4.47,8.228 47.483,47.483 0 0 1 2.77,8 32.951,32.951 0 0 1 0.89,8.27 24.629,24.629 0 0 1 -4.66,14.48 q -4.53,6.222 -14.23,6.066 a 25.158,25.158 0 0 1 -11.8,-2.741 18.184,18.184 0 0 1 -7.62,-8.572 q -2.8,-5.942 -3.92,-15.885 a 198.739,198.739 0 0 1 -0.89,-24.682 L 1481.23,854 q -1.44,4.893 -3.02,13.122 a 99.7,99.7 0 0 0 -1.72,17.073 q -0.255,16.705 3.99,28.175 z"
             inkscape:connector-curvature="0"
             style="fill:white;fill-rule:evenodd"
             inkscape:label="iknas_road_as_shape" />
          <path
             id="S"
             class="cls-1"
             d="M 661,849 C 618.416,814.218 620.075,800.549 617.744,760.319 615.59,723.194 642.626,732.35 667,703 c 18.962,-22.823 48.112,-24.326 77,-26 28.888,-1.674 35.529,7.521 57,28 30.667,29.274 28.895,30.868 58,44 l 65,-67 c -38.59,-77.882 -38.651,-37.471 -77,-77 -34.715,-35.784 -47.193,-56.336 -63,-50 -48.34,19.375 -107.174,46.143 -209,84 -61.446,23.022 -50.847,54.11 -44,122 6.832,67.906 -20.549,110.465 28,148 66.762,52.005 134.961,19.438 183,95 43.438,68.71 28.032,64.69 48,104 28.705,56.52 0.026,38.78 -27,92 -15.369,30.25 -23.8,87.32 -70,90 -34.661,2.01 -39.567,3.98 -75,-19 -36.04,-23.34 -47.371,-22.43 -99,-37 l -91,21 c -22.616,10.91 6.105,69.9 24,73 l 71,10 c 56.732,29.98 29.707,0.36 78.795,47.18 39.863,38.05 126.483,9.23 192.205,-13.18 58.945,-20.1 56.281,-70.5 84,-123 30.019,-56.87 18.439,-33.54 17,-111 -1.831,-98.56 -22.859,-168.984 -81,-208 -58.967,-39.979 -65.008,-5 -128.884,-57.172 z"
             inkscape:connector-curvature="0"
             style="fill:white;fill-rule:evenodd" />
          </clipPath>
      </defs>
      <g
         id="g4553"
         inkscape:label="Logo"
         clip-path="url(#clipPath4562)">
        <rect
           inkscape:label="Background"
           y="0"
           x="0"
           height="2151.8179"
           width="2161.4312"
           id="rect3713"
           style="opacity:1;fill:#57744a;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:7.55905533;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
        <g
           id="Siknas"
           inkscape:label="Siknas">
          <path
             id="iknäs_road_as_shape"
             data-name="iknäs road as shape"
             class="cls-1"
             d="m 904.1,808.61 q 3.732,-10.218 -1.036,-24.787 -5.137,-15.688 -13.775,-20.719 -8.638,-5.031 -20.777,-1.055 a 32.915,32.915 0 0 0 -9.84,4.98 19.527,19.527 0 0 0 -6.038,7.56 24.406,24.406 0 0 0 -1.859,10.742 52.626,52.626 0 0 0 2.918,14.658 q 4.953,15.129 14.078,20.827 9.125,5.698 20.455,1.988 12.136,-3.975 15.874,-14.194 z m 59.183,315.12 40.952,-13.41 -84.217,-257.188 -40.954,13.41 z m 84.282,-27.85 40.19,-15.55 -48.455,-125.185 1.27,-0.492 94.52,107.357 40.98,-15.87 -106.21,-116.313 3.92,-134.282 -38.6,14.94 -0.92,127.856 -1.28,0.491 -74.268,-191.9 -40.188,15.555 z m 148.23,-59.63 40.51,-14.69 -74.62,-205.823 a 44.962,44.962 0 0 1 6.02,-16.61 q 4.335,-6.793 10.42,-9 8.64,-3.135 15.51,1.8 6.87,4.935 12.96,21.747 l 70.06,193.259 40.52,-14.683 -70.685,-194.93 q -11.31,-31.223 -27.46,-43.035 -16.15,-11.812 -35.53,-4.785 a 55.687,55.687 0 0 0 -11.71,5.92 46.331,46.331 0 0 0 -10.28,9.371 56.856,56.856 0 0 0 -8.07,13.482 74.758,74.758 0 0 0 -5.07,18.249 l -0.07,-0.185 -13.53,-25.825 -31.22,11.321 z m 222.33,-77.036 a 56.041,56.041 0 0 0 13.01,-23.121 l 9.07,21.559 30.89,-8.451 -53.485,-195.441 a 152.848,152.848 0 0 0 -10.96,-29.4 q -6.225,-12.147 -15.22,-18.859 a 41.677,41.677 0 0 0 -21.33,-7.918 q -12.345,-1.207 -29.26,3.423 a 72.8,72.8 0 0 0 -22.76,10.4 53.056,53.056 0 0 0 -15.51,16.571 53.964,53.964 0 0 0 -7.02,22.094 q -1.29,12.378 2.7,26.972 a 106.08,106.08 0 0 0 4.09,12.024 q 2.415,5.961 5.92,12.947 l 31.71,-8.676 -3.11,-11.374 a 82.293,82.293 0 0 1 -3.25,-19.284 37.625,37.625 0 0 1 1.78,-13.525 19.061,19.061 0 0 1 5.63,-8.469 21.489,21.489 0 0 1 8.1,-4.256 q 6.57,-1.8 11.1,-0.083 a 17.187,17.187 0 0 1 7.75,6.032 40.851,40.851 0 0 1 5.49,10.722 q 2.28,6.4 4.36,13.987 l 9.44,34.5 q -5.355,4.322 -12.14,10.149 -6.785,5.827 -12.05,11.142 a 160.833,160.833 0 0 0 -18.56,21.888 88.407,88.407 0 0 0 -11.51,22.817 81.212,81.212 0 0 0 -3.93,25.323 112.178,112.178 0 0 0 4.38,29.568 106.22,106.22 0 0 0 9.7,24.141 65.08,65.08 0 0 0 13.88,17.5 44.2,44.2 0 0 0 17.33,9.42 37.074,37.074 0 0 0 19.96,-0.268 49.405,49.405 0 0 0 23.8,-14.054 z m -34.26,-32.6 q -7.59,-7.7 -11.68,-22.681 a 71.891,71.891 0 0 1 -2.75,-18.1 65.4,65.4 0 0 1 1.56,-15.607 52.613,52.613 0 0 1 4.68,-12.895 64.545,64.545 0 0 1 6.58,-10.155 71.8,71.8 0 0 1 7.37,-7.925 q 3.525,-3.207 6.41,-5.624 l 22.35,81.7 a 32.461,32.461 0 0 1 -6.36,9.992 19.884,19.884 0 0 1 -9.41,5.938 q -11.18,3.063 -18.755,-4.643 z m -5.08,-279.9 q 3.06,-9.494 -0.94,-24.092 -4.56,-16.678 -11.97,-23.11 -7.41,-6.432 -20.88,-2.742 a 26.652,26.652 0 0 0 -10.3,4.958 16.254,16.254 0 0 0 -5.16,7.931 29.491,29.491 0 0 0 -0.84,11.131 87.189,87.189 0 0 0 2.82,14.51 q 4.215,15.354 11.07,21.728 6.87,6.374 19.68,2.867 13.465,-3.686 16.515,-13.181 z m -71.87,19.668 q 2.97,-9.472 -1.02,-24.069 -4.575,-16.68 -11.9,-23.133 -7.325,-6.453 -20.8,-2.765 a 27.308,27.308 0 0 0 -10.38,4.98 16.259,16.259 0 0 0 -5.24,7.955 29.487,29.487 0 0 0 -0.84,11.13 86.253,86.253 0 0 0 2.83,14.51 q 4.2,15.354 11.14,21.706 6.94,6.352 19.77,2.844 13.465,-3.686 16.435,-13.158 z M 1480.48,912.37 a 47.58,47.58 0 0 0 11.8,18.564 45.4,45.4 0 0 0 17.89,10.306 78.408,78.408 0 0 0 22.1,3.395 67.4,67.4 0 0 0 25.53,-4.118 51.893,51.893 0 0 0 19.02,-12.476 54.023,54.023 0 0 0 11.89,-19.763 86.733,86.733 0 0 0 1.62,-48.623 121.75,121.75 0 0 0 -7.18,-20.064 150.694,150.694 0 0 0 -9.1,-16.851 q -4.815,-7.639 -8.48,-13.008 l -33.67,-47.115 a 136.59,136.59 0 0 1 -10.11,-17.653 39.407,39.407 0 0 1 -3.64,-17.551 37.627,37.627 0 0 1 1.07,-8.435 21.217,21.217 0 0 1 3.35,-7.416 17.408,17.408 0 0 1 6.13,-5.309 19.23,19.23 0 0 1 9.4,-1.916 q 6.465,0.1 10.42,3.506 3.955,3.406 6.15,10.023 a 69.032,69.032 0 0 1 2.88,16.655 q 0.705,10.035 0.66,23.4 l 29.8,0.47 q 1.455,-6.265 3.05,-15.087 a 112.855,112.855 0 0 0 1.74,-18.252 70.1,70.1 0 0 0 -3.54,-24.527 45.556,45.556 0 0 0 -28.33,-28.653 70.055,70.055 0 0 0 -22.94,-3.9 64.538,64.538 0 0 0 -22.03,3.387 50.752,50.752 0 0 0 -18.49,11.109 55,55 0 0 0 -12.9,19.059 q -4.875,11.523 -5.12,27.241 a 92.619,92.619 0 0 0 2.29,22.443 122.454,122.454 0 0 0 6.66,20.449 155.19,155.19 0 0 0 9.75,19.024 q 5.565,9.227 11.56,18.166 l 30.83,43.336 q 3.33,4.968 5.99,9.136 a 64.23,64.23 0 0 1 4.47,8.228 47.483,47.483 0 0 1 2.77,8 32.951,32.951 0 0 1 0.89,8.27 24.629,24.629 0 0 1 -4.66,14.48 q -4.53,6.222 -14.23,6.066 a 25.158,25.158 0 0 1 -11.8,-2.741 18.184,18.184 0 0 1 -7.62,-8.572 q -2.8,-5.942 -3.92,-15.885 a 198.739,198.739 0 0 1 -0.89,-24.682 L 1481.23,854 q -1.44,4.893 -3.02,13.122 a 99.7,99.7 0 0 0 -1.72,17.073 q -0.255,16.705 3.99,28.175 z"
             inkscape:connector-curvature="0"
             style="fill:#35462d;fill-rule:evenodd"
             inkscape:label="iknas_road_as_shape" />
          <path
             id="S"
             class="cls-1"
             d="M 661,849 C 618.416,814.218 620.075,800.549 617.744,760.319 615.59,723.194 642.626,732.35 667,703 c 18.962,-22.823 48.112,-24.326 77,-26 28.888,-1.674 35.529,7.521 57,28 30.667,29.274 28.895,30.868 58,44 l 65,-67 c -38.59,-77.882 -38.651,-37.471 -77,-77 -34.715,-35.784 -47.193,-56.336 -63,-50 -48.34,19.375 -107.174,46.143 -209,84 -61.446,23.022 -50.847,54.11 -44,122 6.832,67.906 -20.549,110.465 28,148 66.762,52.005 134.961,19.438 183,95 43.438,68.71 28.032,64.69 48,104 28.705,56.52 0.026,38.78 -27,92 -15.369,30.25 -23.8,87.32 -70,90 -34.661,2.01 -39.567,3.98 -75,-19 -36.04,-23.34 -47.371,-22.43 -99,-37 l -91,21 c -22.616,10.91 6.105,69.9 24,73 l 71,10 c 56.732,29.98 29.707,0.36 78.795,47.18 39.863,38.05 126.483,9.23 192.205,-13.18 58.945,-20.1 56.281,-70.5 84,-123 30.019,-56.87 18.439,-33.54 17,-111 -1.831,-98.56 -22.859,-168.984 -81,-208 -58.967,-39.979 -65.008,-5 -128.884,-57.172 z"
             inkscape:connector-curvature="0"
             style="fill:#35462d;fill-rule:evenodd" />
        </g>
        <g
           id="Vatten">
          <path
             id="Bäcken"
             class="cls-2"
             d="m 786,555 c -48.34,19.375 -107.173,46.143 -209,84 -61.446,23.022 -50.847,54.11 -44,122 6.831,67.906 -20.55,110.465 28,148 66.761,52.005 134.96,19.438 183,95 43.437,68.71 28.032,64.69 48,104 28.705,56.52 0.026,38.78 -27,92 -15.37,30.25 -23.8,87.32 -70,90 -34.661,2.01 -42.855,5.42 -78,-18 -28.238,-18.79 -44.371,-21.43 -96,-36 l -94,19 c 0,0 -46.547,17.02 -59,36 -12.453,18.98 -12.209,28.95 -14,44 -3.091,25.97 -31,38 -31,38 0,0 -13.633,2.58 -6,20 7.633,17.42 35.631,131.7 51,141 15.369,9.3 15.534,6.34 34,14 18.466,7.66 40.982,3.52 56,11 15.018,7.48 22.072,23.71 17,38 -5.072,14.29 -18.834,22.63 -22,37 -3.166,14.37 -14.2,20.91 6,47 20.2,26.09 23.98,18.01 19,46 -4.98,27.99 4.709,40.02 5,54 0.291,13.98 7.162,10.39 12,40"
             inkscape:connector-curvature="0"
             style="fill:none;fill-rule:evenodd;stroke:#90a3bc;stroke-width:20px"
             inkscape:label="Backen" />
          <path
             id="Byträsket"
             class="cls-3"
             d="m 1182,-280 1407,1 c -8.29,15.235 -22.93,24.954 -28,43.022 -8.76,31.177 0.5,74.488 -24,89.045 -26,15.445 -132.77,1.7 -164,-7 h -26 c -32.42,-9.058 -75.97,-7.095 -108,-16.008 h -30 c -22.21,-6.173 -47,-14.164 -68,-20.01 -13.77,-3.832 -33.89,1.749 -42,4 -19.73,5.48 -48.55,-0.292 -64,4 h -50 c -15.47,5.129 -31.85,27.889 -43,39.02 -20,19.955 -46.51,34.7 -62,59.03 -16.13,25.337 -37.84,79 -58,97.049 Q 1706.005,85.177 1590,157.22 c -88.13,74.944 -181.71,139.769 -283,202.1 l -36,8 -76,55.028 h -22 c -31.06,8.655 -82.95,-2.448 -114,8 q -16.005,13.005 -32,26.013 c -25.53,11.289 -80.422,27 -99,43.022 q -18,29.012 -36,58.029 c -7.669,6.832 -52.461,34.89 -65,30.015 -12.29,-5.59 -15.224,-20.029 -25,-28.014 l -20,-6 c -6.932,-5.691 -6.271,-15.043 -12,-22.011 -13.282,-16.153 -28.742,-26.9 -39,-47.024 l -21,-42.021 q 1,-6 2,-12.006 l -14,-17.009 c -15.218,-13.167 -96.723,-31 -127,-31.015 v -3 c 13.186,-42.389 13.6,-49.931 62,-58.029 4.812,-7.341 1.934,-14.1 3,-23.012 l 21,-3 q 2,-3 4,-6 c -4.2,-8.776 -9.773,-23.429 -18,-28.014 -9.374,-5.225 -14.356,0.845 -20,-8 3.858,-14.669 41.443,-23.171 64,-17.009 34.613,9.456 123.268,-28.944 164,-37.018 24.445,-44.484 15.04,-79.1 60,-108.055 14.369,-9.254 35.754,-7.685 54,-13.007 50.7,-14.788 144.92,-26.629 176,-60.03 -1.66,-21.073 -22.15,-27.477 -28,-44.022 -9.93,-28.081 -16.74,-57.136 -24,-84.042 -2.89,-10.713 4.86,-17.848 6,-24.012 l -6,-18.01 c -7.44,-29.2 -9.5,-26.147 0,-54.027 3.4,-9.984 -0.15,-15.378 13,-16.008 6.14,3.184 22.86,10.338 28,7 14.89,-7.375 35.16,-19.895 46,-32.016 q -2.505,-12.505 -5,-25.013 5.505,-4.003 11,-8.003 z"
             inkscape:connector-curvature="0"
             style="fill:#90a3bc;fill-rule:evenodd"
             inkscape:label="Bytrasket" />
          <path
             id="Havet"
             class="cls-3"
             d="m 3174,1463 c 0.33,0.67 0.67,1.33 1,2 -0.33,-0.67 -0.67,-1.33 -1,-2 z m 191,295 c 0.03,-17.79 -7.03,-31.02 -5,-44 q 9,-4.005 18,-8 c 4.96,7.49 4.47,12.49 15,15 -0.98,46.17 30.01,22.74 61,34 20.84,10.95 12.49,36.25 19,62 0.67,0.33 1.33,0.67 2,1 h 5 c 4.48,-6.61 19.33,-44.56 23,-47 q 44.49,-0.495 89,-1 c 64.64,-20.17 112.92,-68.03 195,-44 17.44,5.1 27.35,-14.01 47,-8 19.4,5.93 43.71,18.16 60,29 15.09,10.05 25.19,35.88 46,39 6.89,1.03 61.34,-28.46 73,-32 9.36,-2.84 83.86,8.79 93,12 q 25.5,24.99 51,50 14.505,0.495 29,1 c 13.19,18.53 21.28,42.04 41,54 q 25.5,6.495 51,13 27.99,13.995 56,28 c 9.81,4.65 48.56,30 59,28 q 73.995,-30 148,-60 h 126 c 24.85,7.24 42.43,34.32 66,40 l 78,-21 21,-21 c 16.01,1.74 25.56,14.17 39,18 15.51,4.42 27.4,-4.05 44,-4 0.33,-3.33 0.67,-6.67 1,-10 1.71,-3.65 2.69,-4.07 6,-6 q 5.505,2.505 11,5 c 2.67,-1 5.33,-2 8,-3 q 0.495,-7.005 1,-14 c 30.61,-15.57 54.7,31.45 87,27 l 9,-18 h 1 v 2 q 0.495,162.48 1,325 H 64 v -3 q 4,-7.995 8,-16 c -7.079,-5.2 -39.948,-32.1 -42,-39 -3.272,-11.01 9.247,-50.16 12,-60 5.436,-19.42 2.359,-34.65 8,-54 q 17,-30 34,-60 23.5,-19.005 47,-38 c 12.332,-12.98 7.6,-44.28 27,-50 23.915,-7.05 52.017,2.61 76,-4 24.268,-6.69 51.688,-16.28 76,-24 0.636,5.05 0.48,4.96 4,7 1.333,0.33 2.666,0.67 4,1 17.766,-17.08 42.091,-0.82 60,4 18.454,4.97 25.526,-12.48 47,-8 15.914,3.32 29.176,9.68 49,10 -0.078,-7.47 3.985,-6.23 6,-12 l 4,-38 q 6.5,0.495 13,1 c 0.267,24.28 -3.993,40.82 -9,59 -4.3,15.63 6.1,11.3 -2,27 q 2,5.505 4,11 c 2.506,2.16 6.292,-1.11 8,2 1.773,3.23 0.941,9.74 2,12 q 6.5,-0.495 13,-1 c 0.035,-12.78 -3.988,-12.99 -5,-23 7.927,-16.3 9.768,-31.86 21,-44 30.611,-0.62 25.752,19.57 35,39 -1.973,18.6 19.055,28.02 29,26 -0.128,-14 2.4,-56.09 5,-65 8.072,-27.67 -10.009,-71.07 5,-91 6.061,-8.05 17.719,-2.67 27,-8 q 6,-7.5 12,-15 c 5.252,2 11.782,7.18 14,12 2.96,6.43 13.963,118.12 13,122 -23.887,1.27 -49.574,14.96 -53,37 q 8.5,9.495 17,19 c 12.147,5.89 31.193,7.26 38,18 q 1,6.495 2,13 c 3.064,5.32 9.213,7.44 11,15 v 23 c 3.952,18.96 10.39,36.5 17,53 13.476,-2.4 9.028,-21.46 7,-33 0.333,-0.33 0.666,-0.67 1,-1 4,-0.33 0,-2.67 4,-3 0.342,-5.42 -0.446,-6.42 -3,-9 -3,-0.67 3,-4.33 0,-5 0.042,-13.48 -3.855,-22.64 -5,-34 9.126,-6.94 13.471,-14.19 20,-24 q 18,-17.505 36,-35 15.5,-18 31,-36 -12,-25.005 -24,-50 c 5.966,-26.36 20.734,-26.31 46,-34 4.615,-1.4 12.408,-6.66 22,-4 5.687,1.58 9.1,5.61 17,4 0.645,-11.25 0.166,-15.38 6,-23 8.369,-2.31 12.523,-7.72 19,-12 12.615,1.92 50.442,14.34 62,11 17.143,-4.95 40.714,-30.14 60,-27 q 21.99,13.5 44,27 c 9.67,2.22 38.56,-10.15 47,-12 7.72,-1.7 91.84,26.44 94,30 l 9,33 c 2.16,6.4 9.95,12.2 12,17 v 19 l 7,7 c 1.07,5.4 -5.78,5.55 -7,9 -4.05,11.47 2.2,53.55 3,56 5.88,15.26 42.86,29.19 63,26 v -5 q 13.995,0.495 28,1 c 9.63,-12.7 34.82,-21.68 40,-37 v -41 c 2.9,-9.61 12.91,-24.72 19,-34 l 54,-45 c 8.27,-12.59 15.73,-56.37 26,-63 q 22.5,-8.505 45,-17 c 22.09,-8.52 46.06,-24.82 69,-32 31.88,-9.98 63.99,-17.28 94,-26 26.53,-7.71 36.92,18.95 52,24 q 14.505,-1.005 29,-2 12.495,-0.495 25,-1 c 11.18,-5.69 14.15,-31.52 21,-42 10.68,-16.36 20.32,-31.07 31,-48 16.16,-25.61 49.31,-32.07 56,-68 0.67,-0.33 1.33,-0.67 2,-1 3.67,0.33 7.33,0.67 11,1 6.29,3.04 10.09,10.34 15,15 23.03,-0.65 56.16,-17.12 79,-10 q 20.505,12 41,24 c 14.02,4.82 33.33,4.03 49,7 12.94,17.2 13.09,75.71 6,100 v 53 q -9,10.995 -18,22 v 3 c 3.41,3.6 6.81,11.59 15,10 q 12,-8.505 24,-17 51,-0.495 102,-1 c 6.01,0.65 19.52,7.44 26,9 15.07,3.63 29.3,-4.98 47,0 2.67,1.33 5.33,2.67 8,4 q 28.5,-16.005 57,-32 c 19,-5.82 29.82,9.2 47,4 54.76,-16.57 90.21,-60.77 134,-89 16.75,2.42 21.13,9.87 28,22 12.98,-2.31 42.74,-21.92 54,-19 14.23,3.69 35.41,21.4 50,19 2.33,-1.67 4.67,-3.33 7,-5 v -6 c -5.88,-4.13 -11.22,-8.62 -12,-18 2.11,-4.42 3.48,-6.89 8,-9 22.03,-9.66 50.32,-13.24 75,-18 q 7.005,-11.505 14,-23 c 2.67,0.33 5.33,0.67 8,1 6.1,4.9 6.38,14.27 15,17 q 19.5,-1.005 39,-2 c 20.12,4.91 56.76,36.62 78,9 3.47,-8.74 3.11,-11.16 10,-16 2,0.67 4,1.33 6,2 3.35,21.95 2.06,26.07 15,37 q 16.005,-7.995 32,-16 c 14.47,-4.33 23.97,9.13 41,4 11.01,-3.32 48.16,-18.54 58,-25 q 15.495,-18 31,-36 c 6.68,-4.39 15.79,-5.73 22,-10 -0.19,-10.25 2.18,-33.74 5,-40 19.17,-6.91 34.42,-18.7 58,-20 l 9,9 c 8.25,-2.02 11.25,-8.48 17,-13 q -22.995,28.5 -46,57 v 3 c 6.57,7.05 13.13,13.2 25,15 -1,2.33 -2,4.67 -3,7 l -15,6 c 1.84,21.76 9.69,29.69 4,55 -10.13,-1.67 -19.88,-4.48 -25,4 3.56,27.64 31.88,48.14 58,51 q 9.495,-9 19,-18 c 0.03,-23.9 -16.27,-30.4 -13,-51 1,-0.33 2,-0.67 3,-1 10.3,-4.04 17.87,6.4 29,8 l 18,-12 q 1.995,-9 4,-18 3.495,-4.005 7,-8 c 1.94,-6.81 -2.91,-15.32 -1,-23 12.21,-1.97 21,-14.48 30,-21 -2.73,12.21 4.76,19.94 1,34 -6.31,23.59 -13.26,59.8 2,80 11.78,15.59 42.91,14.58 53,32 q 2.505,13.995 5,28 c 1.46,5.15 6.17,11.72 3,20 -7.02,12 -28.46,9.74 -37,20 -9.57,14.45 9.46,27.18 16,33 22.08,0.19 34.32,-7.38 54,-8 z m -3635,326 c 2,0.33 4,0.67 6,1 14.5,6.38 33.381,30.36 41,44 -2.55,10.12 -7.922,36.48 3,42 20.211,7.95 46.161,7.19 52,29 h -182 v -3 q 3.5,-16.5 7,-33 c 11.1,-6.96 43.389,-20.33 51,-28 q 11,-25.995 22,-52 z"
             inkscape:connector-curvature="0"
             style="fill:#90a3bc;fill-rule:evenodd" />
        </g>
        <g
           id="g3710"
           inkscape:label="Logo och vatten" />
        <g
           style="opacity:0.07999998;mix-blend-mode:difference"
           class="cls-4"
           id="Vägar"
           inkscape:label="Vagar">
          <path
             style="fill:none;fill-rule:evenodd;stroke:#296d69;stroke-width:20px"
             inkscape:connector-curvature="0"
             d="m 125,526 348,484 c 0,0 84.6,133.59 232,134 147.4,0.41 284.855,-12.61 295,-15 10.145,-2.39 327.68,-126.62 389,-137 61.32,-10.38 100.42,-27.251 189,-15 88.58,12.251 122.29,11.267 267,55 144.71,43.733 241.21,75.94 310,84"
             class="cls-5"
             id="Siknäsvägen"
             inkscape:label="Siknasvagen" />
          <path
             style="fill:none;fill-rule:evenodd;stroke:#296d69;stroke-width:20px"
             inkscape:connector-curvature="0"
             d="m 1018,1327 c 0,0 -4.61,86.33 95,46 99.61,-40.33 86.82,-32.39 181,-31 94.18,1.39 241.46,-44.96 267,-62 25.54,-17.04 68.93,-103.05 131,-52"
             class="cls-5"
             id="Ateljen" />
          <path
             style="fill:none;fill-rule:evenodd;stroke:#296d69;stroke-width:20px"
             inkscape:connector-curvature="0"
             id="path18"
             d="M 2383,1646"
             class="cls-5" />
          <path
             style="fill:none;fill-rule:evenodd;stroke:#296d69;stroke-width:20px"
             inkscape:connector-curvature="0"
             d="m 630,1486 c 0,0 40.037,134.05 44,179 3.963,44.95 22,226 22,226"
             class="cls-5"
             id="Hamnen" />
          <path
             style="fill:none;fill-rule:evenodd;stroke:#296d69;stroke-width:20px"
             inkscape:connector-curvature="0"
             d="m 230,1406 c 0,0 -33.594,-37.01 -138,11 -104.406,48.01 -62,23 -62,23"
             class="cls-5"
             id="Viken" />
          <path
             style="fill:none;fill-rule:evenodd;stroke:#296d69;stroke-width:20px"
             inkscape:connector-curvature="0"
             d="m 559,1103 c 0,0 -183.833,125.62 -223,177 -39.167,51.38 -149.638,165.57 -162,239 -12.362,73.43 6.88,89.52 33,111 26.12,21.48 73.288,52.09 196,-13 122.712,-65.09 282.307,-194.32 374,-216 83.4,-19.72 263.28,-36.47 245,-146 -18.45,-110.53 -23,-121 -23,-121"
             class="cls-5"
             data-name="Runt byn"
             id="Runt_byn" />
          <path
             style="fill:none;fill-rule:evenodd;stroke:#296d69;stroke-width:20px"
             inkscape:connector-curvature="0"
             d="m 2135,133 -638,450 c 0,0 -125.27,105.348 -148,181 -31.24,103.975 -31.35,168.034 -13,256"
             class="cls-5"
             id="Lappkullen" />
        </g>
      </g>
      <circle
         id="circle4528"
         r="1069.5"
         cy="1069.5"
         cx="1069.5"
         style="display:none"
         inkscape:label="Cirkel" />
    </svg>
    `
    
    func main() {
    	fmt.Println(svgData)
    
    	fmt.Println("---------------------------------")
    		
    	doc := xmldom.Must(xmldom.ParseXML(svgData))
    	fmt.Println(doc.XMLPretty())
    }
    
  • How come this query does not return results?

    How come this query does not return results?

    I'm trying to search for a node in a document I think my xpath query is correct in syntax but does not return any elements. The following test fails.

    func TestLayerIDFinding(t *testing.T) {
    	xm :=
    		`<?xml version="1.0" encoding="UTF-8"?><_signin.SignInButton X="28" Y="352" Width="320" Height="50" LayerID="7FD41E11-85C2-45CC-AFFA-E9D480F22503" />`
    	node := xmldom.Must(xmldom.ParseXML(xm))
    	xpath := `//_signin.SignInButton[@LayerID="7FD41E11-85C2-45CC-AFFA-E9D480F22503"]`
    	r := node.Root.QueryOne(xpath)
    	if r == nil {
    		t.Error("Could Not find element")
    	} else {
    		t.Log("Element found")
    	}
    }
    

    image

  • custom xml prefixes

    custom xml prefixes

    I'd like to add namespaced attributes but I find that xpath queries seem to be ignored unless I recreate a new node. Not a bug of go-xmldom but i really can't see why it doesn't work within my code.

    One of the things i tried to do was export the xml before the creation of the new node and after. The only difference was the existence of a namespaced prefix ux:Class.

    ded648b4-6e6a-42ad-8c20-1975002045cd

    I tried adding a a namespace directive but its not respecting the existence of the prefix.

    Just to get the code the work I would just recreate the node using the existing xml which weirdly allows the xpath query to work however later other weird side effects regarding other ux prefixes are ignored or just plain old don't exist after some simple node additions.

    Do you have any suggestions for preserving custom prefixes?

An (almost) compliant XPath 1.0 library.

xsel xsel is a library that (almost) implements the XPath 1.0 specification. The non-compliant bits are: xsel does not implement the id function. The

Dec 21, 2022
Sqly - An easy-to-use extension for sqlx, base on xml files and named query/exec

sqly An easy-to-use extension for sqlx ,base on xml files and named query/exec t

Jun 12, 2022
omniparser: a native Golang ETL streaming parser and transform library for CSV, JSON, XML, EDI, text, etc.
omniparser: a native Golang ETL streaming parser and transform library for CSV, JSON, XML, EDI, text, etc.

omniparser Omniparser is a native Golang ETL parser that ingests input data of various formats (CSV, txt, fixed length/width, XML, EDI/X12/EDIFACT, JS

Jan 4, 2023
This package provides Go (golang) types and helper functions to do some basic but useful things with mxGraph diagrams in XML, which is most famously used by app.diagrams.net, the new name of draw.io.

Go Draw - Golang MX This package provides types and helper functions to do some basic but useful things with mxGraph diagrams in XML, which is most fa

Aug 30, 2022
Freestyle xml parser with golang

fxml - FreeStyle XML Parser This package provides a simple parser which reads a XML document and output a tree structure, which does not need a pre-de

Jul 1, 2022
Decode / encode XML to/from map[string]interface{} (or JSON); extract values with dot-notation paths and wildcards. Replaces x2j and j2x packages.

mxj - to/from maps, XML and JSON Decode/encode XML to/from map[string]interface{} (or JSON) values, and extract/modify values from maps by key or key-

Dec 29, 2022
Convert xml and json to go struct

xj2go The goal is to convert xml or json file to go struct file. Usage Download and install it: $ go get -u -v github.com/wk30/xj2go/cmd/... $ xj [-t

Oct 23, 2022
parse and generate XML easily in go

etree The etree package is a lightweight, pure go package that expresses XML in the form of an element tree. Its design was inspired by the Python Ele

Dec 19, 2022
'go test' runner with output optimized for humans, JUnit XML for CI integration, and a summary of the test results.
'go test' runner with output optimized for humans, JUnit XML for CI integration, and a summary of the test results.

gotestsum gotestsum runs tests using go test --json, prints formatted test output, and a summary of the test run. It is designed to work well for both

Dec 28, 2022
Go XML sitemap and sitemap index generator

Install go get github.com/turk/go-sitemap Example for sitemapindex func () main(c *gin.Context) { s := sitemap.NewSitemapIndex(c.Writer, true)

Jun 29, 2022
Extraction politique de conformité : xlsx (fichier de suivi) -> xml (format AlgoSec)

go_policyExtractor Extraction politique de conformité : xlsx (fichier de suivi) -> xml (format AlgoSec). Le programme suivant se base sur les intitulé

Nov 4, 2021
axmlfmt is an opinionated formatter for Android XML resources

axmlfmt axmlfmt is an opinionated formatter for Android XML resources. It takes XML that looks like <?xml version="1.0" encoding="utf-8"?> <LinearLayo

May 14, 2022
🧑‍💻 Go XML generator without Structs™

exml ??‍?? Go XML generator without Structs™ Package exml allows XML documents to be generated without the usage of structs or maps. It is not intende

Nov 15, 2022
wikipedia-jsonl is a CLI that converts Wikipedia dump XML to JSON Lines format.

wikipedia-jsonl wikipedia-jsonl is a CLI that converts Wikipedia dump XML to JSON Lines format. How to use At first, download the XML dump from Wikime

Dec 26, 2022
Quick and simple parser for PFSense XML configuration files, good for auditing firewall rules

pfcfg-parser version 0.0.1 : 13 January 2022 A quick and simple parser for PFSense XML configuration files to generate a plain text file of the main c

Jan 13, 2022
:book: A Golang library for text processing, including tokenization, part-of-speech tagging, and named-entity extraction.

prose prose is a natural language processing library (English only, at the moment) in pure Go. It supports tokenization, segmentation, part-of-speech

Jan 4, 2023
Easy AWK-style text processing in Go

awk Description awk is a package for the Go programming language that provides an AWK-style text processing capability. The package facilitates splitt

Jul 25, 2022
Words - help with a word finder game, sketches a text-processing utility program

Shell-style text processing in Go I saw a word game where the puzzle gives you six letters. By means of a clever user interface, you construct words f

Jan 1, 2022
Produces a set of tags from given source. Source can be either an HTML page, Markdown document or a plain text. Supports English, Russian, Chinese, Hindi, Spanish, Arabic, Japanese, German, Hebrew, French and Korean languages.
Produces a set of tags from given source. Source can be either an HTML page, Markdown document or a plain text. Supports English, Russian, Chinese, Hindi, Spanish, Arabic, Japanese, German, Hebrew, French and Korean languages.

Tagify Gets STDIN, file or HTTP address as an input and returns a list of most popular words ordered by popularity as an output. More info about what

Dec 19, 2022