none
VB.NET et les espaces de noms XML RRS feed

  • Question

  • Bien le bonjour,

    Comme les références de mes livres sont stockées dans une base de données Sql SERVER, le but de ma fonction VB.NET est de créer un fichier XML de la même structure que celui de « bibliography.xml » de Word 2013. Pour cela, je dois spécifier http://schemas.openxmlformats.org/officeDocument/2006/bibliography comme espace de nom du fichier xml.

    De façon à ce que mon message soit plus clair voici, d’abord, la ligne qui est écrite dans le fichier  « bibliography.xml » de Word et que j’aimerais recréer dans mon propre fichier xml afin que celui-ci puisse être reconnu par Word comme un fichier contenant des sources bibliographiques qu’il peut exploiter:

    <Sources SelectedStyle="" xmlns:b="http://schemas.openxmlformats.org/officeDocument/2006/bibliography" xmlns="http://schemas.openxmlformats.org/officeDocument/2006/bibliography">
    

    Comment dois-je procéder et puis-je continuer à travailler avec un System.Xml.XmlWriter dans ce cas ? Je pose ces questions car, lorsque j’appelle la méthode « WriteAttributeString » du XmlWriter, deux cas de figure se présentent et ni l’un, ni l’autre, ne permet de recréer fidèlement cette ligne.

    Dans le premier cas, les paramètres passés à la méthode sont :

    Private Const Cst_XMLNS As String = "xmlns"
        Private Const Cst_PREFIXE As String = "b"
        Private Const Cst_NAMESPACE As String = "http://schemas.openxmlformats.org/officeDocument/2006/bibliography"
          writer.WriteAttributeString(Cst_XMLNS, Cst_PREFIXE, Cst_NAMESPACE)
    

    Lors de l’exécution du programme, j’obtiens l’erreur suivante :  « … L'utilisation du préfixe "xmlns" est réservée à XML. »

    Dans le deuxième cas, j’enlève le premier paramètre mais, alors, l’espace de nom n’est pas reconnu en tant que tel et Word ne reconnais pas la bibliographie.

    En VB.NET, comment fait-on pour spécifier un espace de noms dans un fichier xml ?

    D’avance, merci de votre aide.

    Avec mes sincères salutations,

    Paul Van Walleghem


    lundi 25 janvier 2016 11:53

Réponses

  • Bonjour,

    Sans doute une réponse à votre problème ici.

    Ceci dit, je vous conseille d'utiliser plutôt un XDocument et ses XElement pour écrire du XML.

    De plus, c'est un gros avantage de VB ou la syntaxe est super simple (par rapport à C#).

    Exemple de la doc trouvée ici :

    Dim srcTree As XDocument = _ 
        <?xml version="1.0" encoding="utf-8" standalone="yes"?>
            <!--This is a comment-->
            <Root>
                <Child1>data1</Child1>
                <Child2>data2</Child2>
                <Child3>data3</Child3>
                <Child2>data4</Child2>
                <Info5>info5</Info5>
                <Info6>info6</Info6>
                <Info7>info7</Info7>
                <Info8>info8</Info8>
            </Root>
    Dim doc As XDocument = _ 
        <?xml version="1.0" encoding="utf-8" standalone="yes"?>
            <!--This is a comment-->
            <Root>
                <%= From el In srcTree.<Root>.Elements _
                    Where CStr(el).StartsWith("data") _
                    Select el %>
            </Root>
    Console.WriteLine(doc)

    Cool non ? ;-)

    Et avec les XDocument, vous afvez le XName pour spécifier les namespaces.


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    mardi 26 janvier 2016 08:42

Toutes les réponses

  • Bonjour,

    Sans doute une réponse à votre problème ici.

    Ceci dit, je vous conseille d'utiliser plutôt un XDocument et ses XElement pour écrire du XML.

    De plus, c'est un gros avantage de VB ou la syntaxe est super simple (par rapport à C#).

    Exemple de la doc trouvée ici :

    Dim srcTree As XDocument = _ 
        <?xml version="1.0" encoding="utf-8" standalone="yes"?>
            <!--This is a comment-->
            <Root>
                <Child1>data1</Child1>
                <Child2>data2</Child2>
                <Child3>data3</Child3>
                <Child2>data4</Child2>
                <Info5>info5</Info5>
                <Info6>info6</Info6>
                <Info7>info7</Info7>
                <Info8>info8</Info8>
            </Root>
    Dim doc As XDocument = _ 
        <?xml version="1.0" encoding="utf-8" standalone="yes"?>
            <!--This is a comment-->
            <Root>
                <%= From el In srcTree.<Root>.Elements _
                    Where CStr(el).StartsWith("data") _
                    Select el %>
            </Root>
    Console.WriteLine(doc)

    Cool non ? ;-)

    Et avec les XDocument, vous afvez le XName pour spécifier les namespaces.


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    mardi 26 janvier 2016 08:42
  • Merci de vos conseils. Je les suivrai avec ma meilleurs attention.

    Bien à vous,

    mardi 26 janvier 2016 18:35