c# - 前缀“不能从”重新定义为在同一个起始元素标签内
问题描述
我正在创建一个 XML 文件,如下例所示,我尝试将第一个 xmlns
属性添加到<feed>
标签中,但它给了我一个错误:
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0">
这是我尝试创建的完整 XML 文件的格式:
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0">
<title>Glowbox</title>
<link rel="self" href="https://glowbox.gr/"/>
<entry>
<g:id>
<![CDATA[ 4248 ]]>
</g:id>
<g:mpn>
<![CDATA[ BLS054 ]]>
</g:mpn>
<g:title>
<![CDATA[ Body Mist Summer Tales ]]>
</g:title>
<g:product_type/>
<g:google_product_category>
<![CDATA[ ]]>
</g:google_product_category>
<g:price>
<![CDATA[ 13.5 EUR ]]>
</g:price>
<g:custom_label_1>
<![CDATA[ no ]]>
</g:custom_label_1>
<g:image_link>
<![CDATA[ https://glowbox.gr/7798/body-mist-summer-tales.jpg ]]>
</g:image_link>
<g:condition>new</g:condition>
<g:link>
<![CDATA[
https://glowbox.gr/home/4248-body-mist-summer-tales.html
]]>
</g:link>
<g:description>
<![CDATA[
Aναζωογονητικό και ενυδατικό mist σώματος με εκχύλισμα αλόης και χαμομηλιού σε καταπληκτικά
αρώματα!
]]>
</g:description>
<g:brand>
<![CDATA[ BLUE SCENTS ]]>
</g:brand>
<g:availability>
<![CDATA[ in stock ]]>
</g:availability>
</entry>
我用所有标签创建一个类似的 XML 文件的代码是这样的:
XDocument xdoc;
XNamespace gw = "http://base.google.com/ns/1.0";
xdoc = new XDocument(
new XDeclaration("1.0", "", ""),
new XElement("feed", new XAttribute("xmlns", "http://www.w3.org/2005/Atom"), new XAttribute(XNamespace.Xmlns + "g", "http://base.google.com/ns/1.0"),
new XElement("title", "Newcult"),
new XElement("link", new XAttribute("href", "http://www.newcult.gr"), new XAttribute("rel", "self")),
new XElement("entry",
new XElement(gw + "id", "<![CDATA[ 1 ]]>"),
new XElement(gw + "title", "2"),
new XElement(gw + "description", "3"),
new XElement(gw + "link", "4"),
new XElement(gw + "image_link", "5"),
new XElement(gw + "brand", "6"),
new XElement(gw + "gender", "7"),
new XElement(gw + "product_type", "8"),
new XElement(gw + "condition", "new"),
new XElement(gw + "availability", "in stock"),
new XElement(gw + "price", " EUR"),
new XElement(gw + "sale_price", " EUR"),
new XElement(gw + "google_product_category", "1")
)
)
);
但是,当我运行它时,它给了我第一个标签attribute
的错误:<feed>
前缀“不能从”到“ http://www.w3.org/2005/Atom ”在同一个开始元素标签内
我曾尝试更改 , 的顺序attributes
或稍后使用.Add()
方法添加属性,但没有任何效果。
关于如何解决此错误的任何想法?谢谢!
解决方案
尝试省去很多麻烦。试试这个 :
string header = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" +
"<feed xmlns:gw=\"http://base.google.com/ns/1.0\" xmlns=\"http://www.w3.org/2005/Atom\" xmlns:g=\"http://base.google.com/ns/1.0\">" +
"</feed>";
XDocument xdoc = XDocument.Parse(header);
XElement feed = xdoc.Root;
XNamespace gw = feed.GetNamespaceOfPrefix("gw");
XNamespace g = feed.GetNamespaceOfPrefix("g");
XNamespace ns = feed.GetDefaultNamespace();
feed.Add(new XElement(ns + "title", "Newcult" ),
new XElement(ns + "link", new object[] {
new XAttribute("href", "http://www.newcult.gr"),
new XAttribute("rel", "self"),
new XElement(ns + "entry", new object[] {
new XElement(gw + "id", "<![CDATA[ 1 ]]>"),
new XElement(gw + "title", "2"),
new XElement(gw + "description", "3"),
new XElement(gw + "link", "4"),
new XElement(gw + "image_link", "5"),
new XElement(gw + "brand", "6"),
new XElement(gw + "gender", "7"),
new XElement(gw + "product_type", "8"),
new XElement(gw + "condition", "new"),
new XElement(gw + "availability", "in stock"),
new XElement(gw + "price", " EUR"),
new XElement(gw + "sale_price", " EUR"),
new XElement(gw + "google_product_category", "1")
})
})
);
推荐阅读
- python - 键盘记录器卡在循环中
- ios - Swift MeasurementFormatter 错误地将距离转换为英里
- ms-access - 从 MS Access 中的表编译计数时遇到问题
- c - float、double 和 long double 之间没有区别吗?
- javascript - 如何从模拟模块模拟多个值?
- php - 我有一个可以提交的表单,但是当我添加文件上传功能时它不起作用
- java - Spring Data/JPA:如何保存具有多个子集合的项目?
- java - 我有一个休眠问题。启动我的应用程序时速度很慢,使用休眠启动第一个 sessionFactory 需要 2 分钟
- java - iText 7如何为整个文档设置字体
- python - 在 64 位 Mac OSX 上的 64 位 python 解释器上构建“orjson”时,requirement.txt 安装失败