我有一个XElement
其中有这样的内容。
<Response xmlns="someurl" xmlnsLi="thew3url">
<ErrorCode></ErrorCode>
<Status>Success</Status>
<Result>
<Manufacturer>
<ManufacturerID>46</ManufacturerID>
<ManufacturerName>APPLE</ManufacturerName>
</Manufacturer>
//More Manufacturer Elements like above here
</Result>
</Response>
我将如何读里面的价值Status
元素?
我尝试XElement stats = myXel.Descendants("Status").SingleOrDefault();
但这种情况正在返回null。
XElement response = XElement.Load("file.xml"); // XElement.Parse(stringWithXmlGoesHere)
XNamespace df = response.Name.Namespace;
XElement status = response.Element(df + "Status");
应该足以进入Status
子元素。 如果你想要的元素作为一个字符串值,然后做如
string status = (string)response.Element(df + "Status");
如果myXel
已经是响应XElement
那么这将是:
var status = myXel.Elements().Where(e => e.Name.LocalName == "Status").Single().Value;
你需要如何使用localName忽略的命名空间。
有些TextReaders知道,很快就会有更多的数据,但不是所有的字符现在是可用的。 如果你问10个字符,现在有只有4个字符,但其他的人将成为在几秒钟内可用,那么它可能是明智的回报,而不是等待所有10个字符的4个可用字符。
一个例子可能是一个TextReader
是bufferst从一个串口数据:这将是太慢了,等到所有要求的字符可用,因此它会返回,现在已经上市的所有字符。
你可以看到之间的差TextReader.Read(char[], int, int)
和TextReader.ReadBlock(char[], int, int)
在返回值的描述:
TextReader.Read
返回:被读取的字符已经读取0,如果在流的末尾和数量,或者没有数据。 的数量将小于或等于计数参数,这取决于是否是流中可用的数据。
TextReader.ReadBlock
返回:已读取的字符数。 数量将小于或等于计数,这取决于是否所有的输入字符都被读取。
如果你问一个TextReader
以Read
10个字符, Read
是允许的,如果读者认为,这是不明智的等待所有10个字符少于10个字符返回。 只要读者知道,仍然有字符,它会等待至少一个字符。 如果Read
返回4个字节被读取,那么你不知道,如果最后一个字符被读取。 只有当Read
返回零,你知道有什么可以再阅读。 这允许的TextReader现在返回可用字符,而无需等待所有10个字符变为可用。
ReadBlock
会等到所有10个字节是可用的(或EOF)。 所以,一个缓慢的读者可能会阻止你的程序的时间比你的愿望。
要确定您已经阅读所有字符,请使用“读repeatedly until you get a zero return; Use
repeatedly until you get a zero return; Use
直到你读少字节比请求ReadBlock`反复。