当前位置: 首页 > 知识库问答 >
问题:

如何读取XML节点属性?

虞华彩
2023-03-14

嗨,下面是我的XML文件。

xml prettyprint-override"><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文件包含父根作为打印,子节点作为一部分。我想在C#中读取子节点及其属性。若XML文件包含唯一的节点名,那个么我可以读取它们。但如果所有子节点都包含相同的节点名,那么我们如何读取它们呢。

共有1个答案

相俊迈
2023-03-14

如果我很理解你的问题,你应该这样做:

//...
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
    }
}
 类似资料:
  • 问题内容: 我有一个看起来像这样的xml: 在这里,我想检索类型为属性的“源类型”的值。 我曾这样尝试过,但无法正常工作: 我也尝试过这个: 请帮助我!! 在此先感谢Varsha。 问题答案: 由于您的问题较为笼统,请尝试使用Java中提供的XML解析器来实现。如果您特定于解析器,请在此处更新您尝试过的代码

  • 问题内容: 我正在尝试读取xml文件,例如: 这是我到目前为止的代码: 这是我尝试编写此代码的尝试,怎么说都不成功,这就是我开始赏金的原因。这是http://pastebin.com/huKP4KED。 赏金更新: 我确实真的尝试了好几天,但现在没想到会这么难,我会接受有用的链接/书籍/教程,但更喜欢代码,因为我昨天需要这样做。 这是我需要的: 关于上面的xml: 我需要获取标题ID的值 temp

  • 我需要添加一个maven配置文件,当激活时,将一些规则插入maven-shade-plugin重定位部分,因此我在配置文件中添加了一个属性: 并使用${cdh.hive.removation}将其注入到插件配置中:

  • 如何能够基于另一个同级节点的属性选择节点属性?我想要实现的是从所有节点中提取链接(href值),这些节点后跟具有属性class=“body table news loss”的节点跨度,即选择器应该返回https://finance.yahoo.com/news/inspiremd-announces-planned-recapitalization-120000752.html在下面的示例中。我试

  • 在本章中,将学习如何获取XML DOM对象的节点值。 XML文档具有称为节点的信息单元的层次结构。 对象有一个属性 - ,它返回元素的值。 在以下部分中,将讨论学习 - 获取元素的节点值 获取节点的属性值 以下所有示例中使用的node.xml如下所示 - 1. 获取节点值 使用方法以文档顺序返回具有给定标记名称的所有元素的。 示例 以下示例(getnode example.html)将XML文档(

  • 我想从RSS提要中读出一个带有简单XML的特定属性。 项目示例: 我想阅读媒体中的网址:内容。 读取我使用的其他标记:$xml- 读取我尝试的媒体url属性:$xml- 但这只是返回NULL。它与内容有关,内容是一个名称空间。