XDocument实现

时间:2014-03-25 15:00:37

标签: c# linq linq-to-xml

我正在努力最好地理解如何将以下XML实现为XDocument,但我对XDocument的内容很新,而且我遇到了一个如何绕过多属性的概念性问题。具有嵌套在另一个元素内的值的元素。

以下是XML的示例 - 任何帮助将不胜感激

<LVNPImport xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <InterfaceIdentifier>835</InterfaceIdentifier>
    <FolderPaths>
        <Folder fromDate="" toDate="" contactName="APerson" email="AnEmail">Remittance Advice</Folder>
        <Folder>%FACILITY%</Folder>
        <Folder>%PAYORID%</Folder>
        <Folder>%REMITDATE YYYY%</Folder>
        <Folder>%REMITDATE MMMM YYYY%</Folder>
    </FolderPaths>
    <DocumentType>RA</DocumentType>
    <DocumentDescription>%REMITDATE MM-DD-YY%</DocumentDescription>
    <TotalFiles>1</TotalFiles>
</LVNPImport>

修改

上面是一个模板 - 我没有读,我正在写出来所以我需要创建上面的XDoc。

我刚刚进入XDocument的东西,我所拥有的就是你可以在Stack上找到的大多数例子。

2 个答案:

答案 0 :(得分:3)

您可以在new XElement重载内传递多个属性,作为对象内容:

XElement folderPath = new XElement("FolderPaths");
folderPath.Add(
    new XElement(
        "Folder", 
        new XAttribute("fromDate", String.Empty), 
        new XAttribute("toDate", String.Empty), 
        new XAttribute("contactName", "APerson"), 
        new XAttribute("email", "AnEmail"), 
        "Remittance Advice"
    )
);

答案 1 :(得分:1)

对于任何看过这个的人,在我从@ReinderWit获得这个答案的帮助以及另一个问题的答案之间(参见问题中的其他评论)我能够弄清楚如何构建XDocument。

代码如下:

            _folderviewContents =
            new XDocument(
                new XElement("InterfaceIdentifier", "835"),
                //Start of FolderPaths 
                new XElement("FolderPaths",
                    new XElement("Folder",
                        new XAttribute("fromDate", String.Empty),
                        //attributes for Folder w/ lots of attributes
                        new XAttribute("toDate", String.Empty),
                        new XAttribute("contactName", "APerson"),
                        new XAttribute("email", "AnEmail"),
                        //value for that long Folder w/ lots of attributes
                        "Remittance Advice"),
            //Facility
                    new XElement("Folder", String.Empty),
            //PayorID
                    new XElement("Folder", String.Empty),
            //RemitDate Year
                    new XElement("Folder", String.Empty),
            //RemitDate Month/Year
                    new XElement("Folder", String.Empty)),
            new XElement("DocumentType", "RA"),
            new XElement("DocumentDescription",String.Empty),
            new XElement("TotalFiles", "1"));

我仍然需要添加XML版本和命名空间,但这些看起来很简单。希望这有助于未来构建有点奇怪且不那么直截了当的XDoc。