C# 向文档添加Xml元素时出现名称空间问题
我试图向文档中添加一个XML元素,但我对名称空间感到非常困惑。 有人能指出我下面做错了什么吗 Xml之前:C# 向文档添加Xml元素时出现名称空间问题,c#,xml,namespaces,linq-to-xml,C#,Xml,Namespaces,Linq To Xml,我试图向文档中添加一个XML元素,但我对名称空间感到非常困惑。 有人能指出我下面做错了什么吗 Xml之前: ... <TaxKeywordTaxHTField xmlns="e907f980-2644-454c-b5eb-278bd59dc318"> <Terms xmlns="http://schemas.microsoft.com/office/infopath/2007/PartnerControls"/> </TaxKeywordTaxHTField
...
<TaxKeywordTaxHTField xmlns="e907f980-2644-454c-b5eb-278bd59dc318">
<Terms xmlns="http://schemas.microsoft.com/office/infopath/2007/PartnerControls"/>
</TaxKeywordTaxHTField>
...
TermName
和TermId
都位于名称空间”http://schemas.microsoft.com/office/infopath/2007/PartnerControls“
所以只需将此命名空间添加到它们的名称中即可:
terms.AddFirst(
new XElement(ns2 + "TermInfo",
new XElement(ns2 + "TermName", "Kenya"),
new XElement(ns2 + "TermId", "283e7636-3eca-4a6c-8ea7-5c1b768b8f2b")));
这将生成以下xml:
<TaxKeywordTaxHTField xmlns="e907f980-2644-454c-b5eb-278bd59dc318">
<Terms xmlns="http://schemas.microsoft.com/office/infopath/2007/PartnerControls">
<TermInfo>
<TermName>Kenya</TermName>
<TermId>283e7636-3eca-4a6c-8ea7-5c1b768b8f2b</TermId>
</TermInfo>
</Terms>
</TaxKeywordTaxHTField>
肯尼亚
283e7636-3eca-4a6c-8ea7-5c1b768b8f2b
注意:因此,TermInfo
与其父元素在同一默认名称空间中,则名称空间只是继承的,而不是显式声明的
还要记住,若您并没有为元素指定名称空间,那个么它就被认为位于名称空间中。但如果父元素已经定义了默认名称空间(由子元素继承),则应该显式声明此空名称空间。这就是为什么您会在输出中看到
xmlns=”“
。谢谢。很好的解释。非常感谢。
var terms = DocumentManagment.Descendants(ns4 + "TaxKeywordTaxHTField")
.Descendants(ns2 + "Terms").SingleOrDefault();
terms.AddFirst(
new XElement(ns2 + "TermInfo",
new XElement("TermName", "Kenya"),
new XElement("TermId", "283e7636-3eca-4a6c-8ea7-5c1b768b8f2b")));
terms.AddFirst(
new XElement(ns2 + "TermInfo",
new XElement(ns2 + "TermName", "Kenya"),
new XElement(ns2 + "TermId", "283e7636-3eca-4a6c-8ea7-5c1b768b8f2b")));
<TaxKeywordTaxHTField xmlns="e907f980-2644-454c-b5eb-278bd59dc318">
<Terms xmlns="http://schemas.microsoft.com/office/infopath/2007/PartnerControls">
<TermInfo>
<TermName>Kenya</TermName>
<TermId>283e7636-3eca-4a6c-8ea7-5c1b768b8f2b</TermId>
</TermInfo>
</Terms>
</TaxKeywordTaxHTField>