XML文档解析c#
本文关键字:文档 XML | 更新日期: 2023-09-27 18:04:42
我有一个创建XMLDocument
的REST web服务,我对如何使用XMLNode
访问FormattedPrice
中的内部文本有点困惑。我可以写毕业启事,但这将给我所有的内部文本。
<Offers>
<Offer>
<OfferListing>
<Price>
<Amount>1067</Amount>
<CurrencyCode>USD</CurrencyCode>
<FormattedPrice>$10.67</FormattedPrice>
</Price>
</OfferListing>
</Offer>
</Offers>
如果您正在使用Xml DOM,那么快速浏览XPath将非常有帮助。
这应该能满足你的迫切需要:
XmlNode n = doc.DocumentElement.SelectSingleNode("Offer/OfferListing/Price/FormattedPrice");
这将为您提供第一个报价的格式化价格(并假设您的报价节点是根节点)。XPath中还存在其他不那么脆弱的机制,这正是教程可以帮助您的地方。
您最好使用XPath。
XmlDocument doc = ...;
XmlNode fPrice;
XmlElement root = doc.DocumentElement;
fPrice= root.SelectSingleNode("/Price/FormattedPrice");
return fPrice.InnerText;
下面是一个很好的例子:http://www.codeproject.com/KB/cpp/myXPath.aspx
使用XElement解析:
string tmp = @"
<Offers>
<Offer>
<Price>
<Amount>1067</Amount>
<CurrencyCode>USD</CurrencyCode>
<FormattedPrice>$10.67</FormattedPrice>
</Price>
</Offer>
</Offers>";
XElement xml = XElement.Parse(tmp);
string formatedPrice = (string)xml.XPathSelectElement("/Offer/Price/FormattedPrice");
这应该会抓取$ amount:
var price = doc.SelectSingleNode(@"//Offer/Price/FormattedPrice");
string priceText = price.InnerText;
将您想要的内容加载到XmlNodeList中,然后显式地拉出一个或遍历它们…
XmlNodeList pricesList = xmlDoc.GetElementsByTagName("FormattedPrice");
string firstPrice = pricesList[0].InnerText;
首先,您的XML无效....你错过了开始的OfferListing标签。
这是另一个获取节点文本的选项。
var xmlString = "<Offers><Offer><OfferListing><Price><Amount>1067</Amount<CurrencyCode>USD</CurrencyCode><FormattedPrice>$10.67</FormattedPrice></Price></OfferListing></Offer></Offers>";
var xDoc = new XmlDocument();
xDoc.LoadXml(xmlString);
var formattedPrice = xDoc.GetElementsByTagName("FormattedPrice")[0].InnerText;