如何在 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;
但它不起作用
您可能希望选择基于 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
元素开始选择,然后选择具有值为 1
的 ID
属性的Field
元素,获取其下方的textFont
节点和该节点的 fontSize
属性。返回类型是一个XmlNode
,因为属性只是文档树中的节点。
请注意,严格来说,选择属性ID
值为 1
的Page
是不必要的,因为 XML 文件中只能有一个顶级元素。