我正试图进入元素: Xelement“Page”,属性“ID”= 1,女巫包含 XElement“Field”,属性“ID”= 1,女巫包含 带有属性“fontSize”的Xelement“textAndFont”,我试图得到的女巫值:)
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;
但它不起作用
答案 0 :(得分:0)
您可能希望使用基于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
元素处开始选择,然后选择具有值为Field
的{{1}}属性的ID
元素,获取1
它下面的节点和该节点的textFont
属性。返回类型是fontSize
,因为属性只是文档树中的节点。
请注意,严格来说,选择XmlNode
属性Page
值为ID
是不必要的,因为XML文件中只能有一个顶级元素。