2014-07-18 56 views
2

我以编程方式从模板(xsn)创建了xml文件(infopath窗体)。 我从模板文件(xsn)具有以下xml文件结构。现在我想将值附加到xml文件。从infopath模板创建表格

<my:PropertyDetails> 
    <my:AddressSelectionList>2201.00000000000</my:AddressSelectionList> 
    <my:PropRef>210</my:PropRef> 
    <my:UPRN>2201.00000000000</my:UPRN> 
    <my:AddressLine>220 test road</my:AddressLine> 
    <my:PropId>210</my:PropId> 
    <my:BlockUPRN></my:BlockUPRN> 
    <my:Attachments xsi:nil="true"></my:Attachments> 
    <my:Filegroup> 
     <my:URL></my:URL> 
     <my:URLText></my:URLText> 
    </my:Filegroup> 
    </my:PropertyDetails> 
    <my:ScaffoldMeasure> 
    <my:groupRepeat> 
     <my:Description></my:Description> 
     <my:Code></my:Code> 
     <my:Unit></my:Unit> 
     <my:Rate xsi:nil="true"></my:Rate> 
     <my:Quantity></my:Quantity> 
     <my:Cost xsi:nil="true"></my:Cost> 
     <my:Comments></my:Comments> 
     <my:ID></my:ID> 
     <my:Title></my:Title> 
    </my:groupRepeat> 
    </my:ScaffoldMeasure> 
<my:PorchBalcony> 
    <my:groupRepeat> 
     <my:Description></my:Description> 
     <my:Code></my:Code> 
     <my:Unit></my:Unit> 
     <my:Rate xsi:nil="true"></my:Rate> 
     <my:Quantity></my:Quantity> 
     <my:Cost xsi:nil="true"></my:Cost> 
     <my:Comments></my:Comments> 
     <my:ID></my:ID> 
     <my:Title></my:Title> 
    </my:groupRepeat> 
    </my:PorchBalcony> 

我试图访问如下:

> XmlNodeList properNodeList = 
> xmlDoc.GetElementsByTagName("my:PropertyDetails"); 
> XmlNodeList smNodeList = xmlDoc.GetElementsByTagName("my:ScaffoldMeasure"); 

var a= new XElement(
       myns + "groupRepeat", 
       from c in xmlDoc.Elements(nsm + "ScaffoldMeasure") select 
       new XElement(nsm + "groupRepeat", 
     new XElement(nsm + "Description", "scaffold1"), 
       new XElement(nsm + "Code", "sc1"), 
       new XElement(nsm + "Unit", "sc1"), 
       new XElement(nsm + "Rate", "sc1"), 
       new XElement(nsm + "Quantity", "sc1"), 
       new XElement(nsm + "Cost", "sc1"), 
       new XElement(nsm + "Comments", "sc1"), 
       new XElement(nsm + "ID", "sc1"), 
       new XElement(nsm + "Title", "ssssssss")));   
     xmlDoc.Save(@"C:\ttt.xml"); 

现在我需要的值附加在groupRepeat部分。任何人都可以建议什么是将值附加到该部分的最佳方式?
感谢

+0

你的代码里有什么类型的'xmlDoc','XDocument'或'XmlDocument'? – har07

+0

它是XDocument,XDocument xmlDoc = XDocument.Load(@“C:\ 1.xml”); –

+0

是你的XML的''根节点吗? – har07

回答

0

即使经过多次澄清我问意见,我真不知道你是什么后,究竟。这个怎么样:

..... 
XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance"; 

var sm = xmlDoc.Descendants(nsm + "ScaffoldMeasure").First(); 
var groupRepeat = new XElement(nsm + "groupRepeat", 
         new XElement(nsm + "Description", "scaffold1"), 
         new XElement(nsm + "Code", "sc1"), 
         new XElement(nsm + "Unit", "sc1"), 
         new XElement(nsm + "Rate", "sc1", 
             new XAttribute(xsi + "nil", true)), 
         new XElement(nsm + "Quantity", "sc1"), 
         new XElement(nsm + "Cost", "sc1", 
             new XAttribute(xsi + "nil", true)), 
         new XElement(nsm + "Comments", "sc1"), 
         new XElement(nsm + "ID", "sc1"), 
         new XElement(nsm + "Title", "ssssssss")); 
sm.Add(groupRepeat); 
xmlDoc.Save(@"C:\ttt.xml"); 

我以为你在XML正好一个<my:ScaffoldMeasure>节点,要添加另一个<my:groupRepeat>节点与<my:ScaffoldMeasure>内的子节点完成。

+0

的结构非常感谢。上面的代码为我工作。这正是我所需要的,因为我没有得到正确的语法。 –