繁体   English   中英

如何读取XML节点属性?

[英]How to Read XML node attributes?

大家好,下面是我的XML文件。

<print>      
    <part keyName="logo" fontName="" fontSize="" fontColor="" bold="" italic="" underline="" maxWidth="45" textAlign="center" isBarcode="" isImage="true">
        <logo>testimg.jpg</logo>
    </part>      
    <part keyName="header" fontName="" fontSize="" fontColor="" bold="" italic="" underline="" maxWidth="45" textAlign="center" isBarcode="" isImage="">
        <SpaceSep>0</SpaceSep>
        <LineSep>1</LineSep>
        <text fontSize="20">Tax Invoice</text>
        <LineSep>1</LineSep>
        <text>Test Pvt Ltd</text>
        <LineSep>1</LineSep>
        <address/>
        <area/>
        <city/>
        <state/>
        <pin/>
        <country/>
        <LineSep>1</LineSep>
        <text>Phone: </text>
        <phone></phone>
        <LineSep>1</LineSep>
        <text>GSTIN: </text>
        <gstIn></gstIn>
        <LineSep>1</LineSep>
    </part>
</print>

上面的XML文件包含父根作为Print ,子节点作为一部分 我想读取子节点及其在C#中的属性。 如果XML文件包含唯一的节点名,那么我可以读取它们。 但是,如果所有子节点都包含相同的节点名,那么我们如何读取它们。

如果我很好地理解了您的问题,则应执行以下操作:

//...
using System.Linq;
using System.Xml.Linq;
//...

XDocument doc = XDocument.Load(@"C:\directory\file.xml");
IEnumerable<XElement> partElements = doc.Root.Elements("part");

foreach (XElement partElement in partElements)
{
    // read attribute value
    string keyName = partElement.Attribute("keyName")?.Value;

    //...

    // iterate through childnodes
    foreach (XElement partChildElement in partElement.Elements())
    {
        // check the name
        if (partChildElement.Name == "SpaceSep")
        {
            int value = (int)partChildElement; // casting from element to its [int] content

            // do stuff for <SpaceSep> element
        }
        else if (partChildElement.Name == "text")
        {
            string text = (string)partChildElement; // casting from element to its [string] content

            // do stuff for <text> element
        }

        // and so on for all possible node name
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM