如何在 C# 中“挖掘”XML 文件

本文关键字:挖掘 XML 文件 | 更新日期: 2023-09-27 18:33:06

我正在尝试进入元素:属性为"ID"的X元素"页面"= 1,女巫包含属性为"ID"=1 的 XElement "字段",女巫包含X元素"文本和字体"与属性"字体大小",女巫值我试图得到:)

XML 代码为:

<?xml version="1.0" encoding="utf-8">
<Page ID="1">
  <pageProperties filPath="filename" backgroundColor="Color.BLUE" MarginLeft="0" MarginRight="0" MarginTop="0" MarginBottom="0" />
  <Field ID="1">
    <FieldProperties elementWidth="100" ElementX="30" ElementY="0" fromRight="false" fromBottom="false">
      <background imagePath="C:filePatch" BackColor="Color.WHITE" transparentBackground="false" />
    </FieldProperties>
    <textAndFont conten="SIMENS" fontSize="10" fontFamily="Arial" fontColor="new Color(34, 236, 182)" />
    <textPosition PaddintLeft="10" PaddingRight="20" PaddintTop="10" PaddingBottom="5" VerticalAlg="center" HorisontalAlg="center" />
    <textDirection wrightToTop="false" widthLocked="true" stretchingStep="10" />
  </Field>
</Page>

编辑:

我的镜头是:

 XElement xel = XElement.Load(@"xmlFile.xml");
     var prop = from propp in xel.Element("textAndFont").Attribute("fontSize")
                 where (int)propp.Element("Page").Attribute("ID")==1 &&
                 (int)propp.Element("Field").Attribute("ID")==1 select
                propp;

但它不起作用

如何在 C# 中“挖掘”XML 文件

您可能希望选择基于 XPath 的所需属性节点,这很好地反映了您的元素层次结构:

var doc = new XmlDocument();
doc.Load(@"path'to'your'xmlfile.xml");
var fontSize = doc.SelectSingleNode("/Page[@ID=1]/Field[@ID=1]/textAndFont/@fontSize");
Console.WriteLine("font size: " + fontSize.Value);

XPath 表达式从Page元素开始选择,然后选择具有值为 1ID 属性的Field元素,获取其下方的textFont节点和该节点的 fontSize 属性。返回类型是一个XmlNode,因为属性只是文档树中的节点。

请注意,严格来说,选择属性ID值为 1Page是不必要的,因为 XML 文件中只能有一个顶级元素。