2016-06-09 10 views
0

Ich habe ein Bild Sitemap, die Knoten wie folgt hat:Wie erstelle ich einen XML-Knoten wie "image: image" ohne xmnls-Attribut? C#

<image:image xmlns:image="image"> 
    <image:loc> 
    https://website 
    </image:loc> 
    <image:caption/> 
    <image:title>logo72x72</image:title> 
</image:image> 

Dies ist der Code, der es schafft:

XmlNode imageNode = doc.CreateElement("image", "image", "image"); 
XmlNode imageLocNode = doc.CreateElement("image", "loc", "image");       
imageLocNode.AppendChild(doc.CreateTextNode(imageUrl)); 
imageNode.AppendChild(imageLocNode); 

XmlNode imageCaptionNode = doc.CreateElement("image", "caption", "image"); 
imageCaptionNode.AppendChild(doc.CreateTextNode(imageCaption)); 
imageNode.AppendChild(imageCaptionNode); 

XmlNode imageTitleNode = doc.CreateElement("image", "title", "image"); 
imageTitleNode.AppendChild(doc.CreateTextNode(imageTitle)); 
imageNode.AppendChild(imageTitleNode); 

urlNode.AppendChild(imageNode); 

jedoch in der Google Search Console Ich erhalte einen Fehler, da des Bild-Tags, das nicht mit der Google-Dokumentation übereinstimmt. Laut Google sollte das Image-Tag wie folgt aussehen: <image:image>, nicht <image:image xmlns:image="image">.

Ich änderte den Code zu doc.CreateElement("image", "image"), aber das änderte die Ausgabe zu <image xmlns:image="image"> (es entfernte den Teil, den ich wollte, und verließ die xmnls). Wie verhindere ich, dass das Attribut xmlns hinzugefügt wird?

EDIT: Der Namespace in der Wurzel meines Dokuments deklariert ist:

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" 
    xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"> 
+0

Sie müssen den richtigen Namespace irgendwo angeben. Überprüfen Sie die Dokumentation, es gibt immer eine Deklaration und die URL muss auch übereinstimmen. –

+0

Der Namespace wird im Stammverzeichnis meines Dokuments deklariert:

+0

Sie müssen die Uri_ für Bild nicht das String-Bild als 3. Parameter von createelement übergeben – tolanj

Antwort

1

Sie müssen den richtigen Namespace für jedes Ihrer Elemente verwenden. Der Namespace ist http://www.google.com/schemas/sitemap-image/1.1, nicht image.

doc.CreateElement("image", "image", "http://www.google.com/schemas/sitemap-image/1.1")` 

image ist ein Namensraum Präfix und ein Namespacepräfix muss von xmlns:image="..." in dem Element oder einem Vorgängerelement deklariert werden. In Ihrem Fall wird es im Stammverzeichnis des Dokuments deklariert, daher wird es nicht ein zweites Mal hinzugefügt.